我已经阅读了关于在 jquery ui 对话框中加载 plupload 小部件的相同问题的所有类似线程,但没有让它在 IE9 中工作(FF 和 Safari 都可以正常工作)。
问题是在 IE9 中加载了 Silverlight 版本的 plupload,因为 IE9 不支持 html5 文件处理。不知何故,“添加文件”按钮不可按下,但“开始上传”按钮却是。从我目前所阅读的内容来看,这是由于 UI 对话框在我打开它之前被隐藏造成的。有几个人建议使用调用来刷新上传器小部件,但这并没有什么不同。
相关的 Javascript 代码如下所示: $("#upload-widget-container").dialog({ autoOpen: false, show: "blind", hide: "fold", modal: false, width: 660, height: 400 , 可调整大小: false });
$("#upload-widget").pluploadQueue({
runtimes : 'html5,silverlight,flash,browserplus',
container: 'upload-widget-container',
url : 'upload.php',
max_file_size : '100mb',
chunk_size : '1mb',
unique_names : true,
filters : [
{title : "Image files", extensions : "jpg,gif,png"},
{title : "Zip files", extensions : "zip"},
{title : "Bin files", extensions : "bin"}
],
flash_swf_url : '/js/plupload/plupload.flash.swf',
silverlight_xap_url : '/js/plupload/plupload.silverlight.xap'
});
$('.upload-button').live('click', function(e)
{
$('#upload-widget-container').dialog("open");
var uploader = $('#upload-widget').pluploadQueue();
uploader.bind('StateChanged', function() {
if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {
// Done uploading
for (var i=0; i < uploader.files.length; i++)
{
if (uploader.files[i].status == plupload.DONE)
{
alert(uploader.files[i].id + ' ' + uploader.files[i].name);
}
}
}
});
}
);
标记如下所示:
<div id="upload-widget-container">
<div id="upload-widget"></div>
</div>
<a class="upload-button green-button-148" href="#" rel="1234">Upload</a>
关于如何在 IE9/Silverlight 中使用它的任何想法?如上面代码所示,刷新 plupload 对象和设置 .plupload div 的 z-index 并没有什么区别。
更新:它实际上看起来像一个 IE9 问题,因为如果我在 FF 和 Safari 中使用 plupload 的 silverlight 运行时它工作正常。所以它是 plupload、jquery ui 对话框、silverlight 和 IE9 的组合。
更新 2:所以我制作了一个没有其他标记、css 或 js 的普通测试页面。这消除了其他脚本或标记或样式干扰其工作的可能性。但是它在 IE 9(版本:9.0.8112.16421)中仍然不起作用。
但是,如果我删除包含 jQuery UI 主题 CSS 的行,它确实可以工作并且“添加文件”按钮是可点击的。 这些新信息有什么新想法吗?我猜它与 UI 主题 CSS 中的显示属性或类似的东西有关。