当$.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();

}

 

 

posted @ 2012-08-20 12:52  Warrentech  Views(3300)  Comments(4Edit  收藏  举报