本人在使用uploadify 3.2做上傳頁面時,遇到一個問題 在載入完上傳按鈕後載入使用load其他頁面的時候出現不斷報JS Error
try { document.getElementById("SWFUpload_0").SetReturnValue(__flash__toXML(SWFUpload.instances["SWFUpload_0"].testExternalInterface()) ); } catch (e) { document.getElementById("SWFUpload_0").SetReturnValue("<undefined/>"); }
迴圈出現如下錯誤:
SCRIPT5007: 無法設定屬性“SetButtonTextPadding”的值: 對象為 null 或未定義
admin.aspx, 行48 字元3
SCRIPT5007: 無法設定屬性“SetButtonTextStyle”的值: 對象為 null 或未定義
admin.aspx, 行48 字元3
SCRIPT5007: 無法設定屬性“SetButtonAction”的值: 對象為 null 或未定義
admin.aspx, 行48 字元3
SCRIPT5007: 無法設定屬性“SetButtonDisabled”的值: 對象為 null 或未定義
admin.aspx, 行48 字元3
SCRIPT5007: 無法設定屬性“SetButtonCursor”的值: 對象為 null 或未定義
admin.aspx, 行48 字元3
SCRIPT5007: 無法設定屬性“TestExternalInterface”的值: 對象為 null 或未定義
admin.aspx, 行48 字元3
SCRIPT5007: 無法擷取屬性“SetReturnValue”的值: 對象為 null 或未定義
admin.aspx, 行1 字元139
SCRIPT5007: 無法擷取屬性“SetReturnValue”的值: 對象為 null 或未定義
admin.aspx, 行1 字元181
在讀了 Fix SWFUpload destroy時IE下不斷報JS Error的bug(http://my.opera.com/justnewbee/blog/fix-swfupload-destroy-ie-js-error)後也反覆摸索解決辦法消耗不少精力,後來想,既然是uploadify頁面元素載入後,頁面換了,而IE下js無法正常銷毀swfupload元素,而使得flash中的錯誤處理代碼報錯就是,在閱讀技術資料的時候我發現swfupload和uploadfy有destroy,那我們手工銷毀就是,於是我在每次重新整理頁面前進行如下檢查,如果元素存在就銷毀
if ($('#file_upload').length > 0) { //注意jquery下檢查一個元素是否存在必須使用 .length >0 來判斷
$('#file_upload').uploadify('destroy');
}銷毀