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(); }