(YUI uploader)监听器不触发事件

时间:2009-11-21 14:29:22

标签: php javascript jquery yui yui-uploader

我正在尝试使用YUI上传器,但是当我点击浏览按钮时,我无法打开文件对话框窗口。我正在关注(或多或少)example on Yahoos demo

这是我的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 个答案:

答案 0 :(得分:2)

我有同样的问题。

2.版本的uploader.swf

存在错误

如果您遇到与我相同的问题,那么切换到2.7版本的uploader.swf会使您的事件按预期启动。

答案 1 :(得分:1)

我认为这可能与YUI上传者页面中的这条说明有关:

  

由于即将推出的Flash Player 10中的安全性更改,用于调用“浏览”对话框的UI必须包含在Flash播放器中。因此,这个新版本的上传器与后一版本编写的代码并不兼容(但它与Flash Player 9兼容)。如果不仔细阅读文档并查看新示例,请不要升级到此版本。

这意味着您不必直接通过<input>按钮调用上传功能,而是必须创建另一个<div>,其中包含由YUI上传器创建的透明Flash叠加层。

See the example from the YUI site

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

答案 2 :(得分:0)

正常情况下,当发生关注swf文件时,原因是此文件打开对话框而不是JAVASCRIPT,所以你必须下载文件并放入你的服务器,你不能直接在雅虎网站访问。

你也可以使用这种依赖

最好

内厄姆

PS。我第一次使用yui上传有同样的问题。