当$.uploadify() 遇到 $.dialog() 【在IE下需要注意的问题】
Uploadify v3.0 是时下较为流行的基于jQuery的多文件上传插件,在一般应用时是没什么问题的。不过最近在IE下遇到了一个怪异的问题,找了半天才确定原因,现与大家分享一下我自己的解决办法。
问题简述(IE下):
当Uploadify出现在Dialog中,并且被销毁时,比如Dialog被empty(),或者直接执行$('.uploadify').uploadify('destroy')方法时,IE将会无限报错,如果此时你正打开控制台进行调试,就会面临IE的开发者工具被红字刷屏,直接卡死。
问题详述:
$.dialog是jQuery UI组件库中被利用较频繁的插件之一,用途是将页面中一个已知的标签内容以弹出对话框的形式展现出来。通常我们把包含Uploadify插件的对话框弹出并关闭后,是不会销毁Uploadify的,因为这个对话框只是被隐藏了,所以没有问题。但在一些特殊情况下,如果我们在关闭对话框后必须清空里面的内容的话,就将面临本文所说的灾难。
解决办法:
在尝试过多种方案后,我发现目前比较简单并能够解决该问题的办法是:在销毁Uploadify以前,隐藏之,然后随便怎么搞都没有问题了。
// 找到弹出对话框 var dialog = $('#dialog'); dialog.dialog({title: '测试对话框', width: 200, height: 200, close: afterClosed}); function afterClosed(){ // 在弹出对话框内找到Uploadify插件,并隐藏之。 dialog.find('.uploadify').hide(); // 将弹出对话框还原成弹出前的状态,并清空里面的内容。 dialog.dialog('destroy').empty(); }