uploadify(或swfupload)刷新页面时IE下不断报JS Error的bug的处理

本人在使用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/>"); }

uploadify(或swfupload)刷新页面时IE下不断报JS Error的bug的处理_第1张图片

循环出现如下错误:

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

uploadify(或swfupload)刷新页面时IE下不断报JS Error的bug的处理_第2张图片

在读了 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');

}销毁

2014.3.26补充

 $('#file_upload').uploadify初始化之前,直接使用下面的效果更好

  try {
                $('#file_upload').uploadify('destroy');
            }catch(e)
            {
            }

 

你可能感兴趣的:(uploadify)