(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.

Смотрите пример с сайта 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, была та же проблема.

Другие вопросы по тегам