“不能执行已释放 Script 的代码”JS报错(IE)解决办法

“不能执行已释放 Script 的代码”JS报错(IE)解决方法

因为用了IFrame出现的问题,应用场景:

在子页面(iframe中的页面)中给主页面“保存”按钮添加点击事件,因多次在iframe中加载页面造成js错误。第一次执行时没有问题,第二次以后都不能正常执行click处理函数,每次在IE调试时报“不能执行已释放 Script 的代码”,始终找不到原因,看了网上也没有合适的解决方法(http://www.jb51.net/article/11311.htm 这个还比较靠谱,但是还是没有解决),最后突然想到了,因多次给iframe加载页面都会给主页面“保存”按钮重新添加click处理函数,因为主页面始终存在,子页面在变化,造成给主页面“保存”按钮多次添加处理函数(是在子页面定义的),这样在第二次加载iframe后点击”保存“按钮会先执行第一次绑定的click处理方法(但是该页面已经不存在了),是出现报错的主要原因,然后突然想到了jQuery的unbind()方法

解决办法:

在子页面给父页面按钮添加click处理函数前, 先给父页面按钮调用unbind()方法取消以前的绑定事件,然后再绑定处理函数。这样每次执行的都是最新的处理函数,就不会出现因找不到原来的处理函数造成这样的错误了。