无法从释放的脚本执行代码 - IE6 IE7 IE8 IE9

Hal*_*yon 8 javascript internet-explorer-8 internet-explorer-7 internet-explorer-6 internet-explorer-9

我今天在IE6中遇到了这个问题(但在所有最新版本的IE上都可以重现).

我注意到有不少人遇到这个问题,我还没有看到一个非常实用的方法来解决这个问题.

关于HTML文档头部中的脚本标记和元标记的顺序似乎还有一些其他解决方案.我还没有确认这一点,但无论如何这里是一个链接: 导致错误的原因是"无法从释放的脚本执行代码"

我也知道这个问题的解决方案所以我在下面发布它

Hal*_*yon 16

首先,您需要找到消息的来源.

IE以其糟糕的错误报告而闻名,但幸运的是IE9似乎有些能力.如果在IE6,IE7或IE8中发生此错误,它也会在IE9中发生,因此使用IE9进行调试(为了您的理智)

在IE9中打开webdeveloper控制台(按F12键)并运行这些步骤以产生此错误.

IE9现在应该在控制台上给你一个文件和行指示,是的!

通常出现的错误是在一些延迟之后执行的回调,无论是通过setTimeout还是因为Ajax请求.如果在已卸载时定义了回调的窗口,文档或框架,那么当它尝试执行回调函数时,您将收到此消息.

看似其他浏览器忽略了这个问题,我猜这很好.为了让IE做同样的事情,只需将回调包装在try-catch块中(我不知道回调会评估什么,我不认为它的计算结果为undefined).如果你想要更精确的错误处理,或者如果你真的想要在发生这种情况时采取行动,你可以这样做,请在这里发帖,因为我很好奇实际需要什么样的用例.