(YUI Uploader) слушатели не разжигают события
Я пытаюсь использовать YUI Uploader, но не могу открыть диалоговое окно файла, когда нажимаю кнопку обзора. Я следую (более или менее) примеру демонстрации Yahoos.
Вот мой HTML-код:
<div id="fileProgress">
<input id="fileName" type="text" size="40" />
<input id="uploaderUI" name="uploaderUI" class="submitButton" type="button" value="Browse" />
<input id="uploadFile" name="uploadFile" class="submitButton" type="button" value="Upload" />
<div id="progressBar"></div>
</div>
А вот мой код javasctips:
jQuery(document).ready(function() {
initYUIUpload();
});
function initYUIUpload()
{
YAHOO.widget.Uploader.SWFURL = "wp-includes/js/yui/assets/uploader.swf";
var uploader = new YAHOO.widget.Uploader("uploaderUI");
uploader.addListener('contentReady', handleContentReady);
uploader.addListener('fileSelect',onFileSelect)
uploader.addListener('uploadStart',onUploadStart);
uploader.addListener('uploadProgress',onUploadProgress);
uploader.addListener('uploadCancel',onUploadCancel);
uploader.addListener('uploadComplete',onUploadComplete);
uploader.addListener('uploadCompleteData',onUploadResponse);
uploader.addListener('uploadError', onUploadError);
jQuery('#uploadFile').click(function(){ upload() });
}
ОБНОВИТЬ
Я "сдался", используя загрузчик YUI, и сейчас я использую Uploadify.
3 ответа
У меня была точно такая же проблема.
Существует ошибка в версии 2.8 файла uploader.swf.
Если у вас возникла та же проблема, что и у меня, то переключение на версию 2.7 uploader.swf приведет к тому, что ваши события начнут работать, как и ожидалось.
Я думаю, что это может быть связано с этой заметкой со страницы YUI Uploader:
Из-за изменений безопасности в предстоящем Flash Player 10 пользовательский интерфейс для вызова диалогового окна "Обзор" должен содержаться в Flash Player. Из-за этого новая версия Uploader'а НЕ ОБРАТНО СОВМЕСТИМА с кодом, написанным для работы с предыдущей версией (однако, она совместима с Flash Player 9). Не обновляйте эту версию, не прочитав внимательно документацию и не ознакомившись с новыми примерами.
Это означает, что вместо вызова вашей функции загрузки напрямую из <input>
Кнопка, вы должны создать другую <div>
который будет содержать прозрачное наложение Flash, созданное загрузчиком YUI.
<div id="uiElements" style="display:inline;">
<div id="uploaderContainer">
<div id="uploaderOverlay" style="position:absolute; z-index:2"></div>
<div id="selectFilesLink" style="z-index:1"><a id="selectLink" href="#">Select Files</a></div>
</div>
<div id="uploadFilesLink"><a id="uploadLink" onClick="upload(); return false;" href="#">Upload Files</a></div>
</div>
<script type="text/javascript">
YAHOO.util.Event.onDOMReady(function () {
var uiLayer = YAHOO.util.Dom.getRegion('selectLink');
var overlay = YAHOO.util.Dom.get('uploaderOverlay');
YAHOO.util.Dom.setStyle(overlay, 'width', uiLayer.right-uiLayer.left + "px");
YAHOO.util.Dom.setStyle(overlay, 'height', uiLayer.bottom-uiLayer.top + "px");
});
</script>
Нормально, если случается, что проблема связана с файлом SWF, причина в том, что этот файл открывает диалоговое окно, а не JAVASCRIPT, поэтому вам нужно загрузить файл и вставить на свой сервер, к которому у вас нет прямого доступа к сайту Yahoo.
также вы можете использовать эту зависимость
лучший Наум
PS. В первый раз, когда я использовал загрузку yui, была та же проблема.