2

我正在尝试使用 YUI 上传器,但单击浏览按钮时无法打开文件对话框窗口。我正在(或多或少)关注 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。

4

3 回答 3

2

我有这个完全相同的问题。

2.8版本的uploader.swf有一个bug

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

于 2010-01-28T01:37:55.963 回答
1

我认为这可能与YUI Uploader 页面中的此注释有关:

由于即将推出的 Flash Player 10 中的安全性更改,调用“浏览”对话框的 UI 必须包含在 Flash 播放器中。正因为如此,这个新版本的 Uploader 不向后兼容为与以前版本一起工作而编写的代码(但是,它与 Flash Player 9 兼容)。不要在没有仔细阅读文档和查看新示例的情况下升级到此版本。

这意味着不是直接从<input>按钮调用您的上传函数,您必须创建另一个<div>将包含由 YUI 上传器创建的透明 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>
于 2009-12-07T22:35:08.483 回答
0

正常情况下,当关注的是 swf 文件时,原因是该文件打开对话框而不是 JAVASCRIPT,因此您必须下载该文件并将其放入您无法直接在 yahoo 站点中访问的服务器。

你也可以使用这个依赖

最好的那鸿

PS。我第一次使用 yui upload 时遇到了同样的问题。

于 2010-09-22T00:22:26.773 回答