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

时间:2011-04-28 00:12:48

标签: javascript internet-explorer-8 internet-explorer-7 internet-explorer-6 internet-explorer-9

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

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

关于HTML文档头部中的脚本标记和元标记的顺序似乎还有其他一些解决方案。我还没有确认这一点,但无论如何这里是一个链接: What causes the error "Can't execute code from a freed script"

我也知道这个问题的解决方案,所以我将其发布在

之下

3 个答案:

答案 0 :(得分:16)

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

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

在IE9中打开webdeveloper控制台(按F12键)并执行以下步骤以产生此错误。

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

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

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

答案 1 :(得分:0)

如果您有使用多个帧的页面,则此错误可能是由于从页面中删除初始帧后在其他帧中使用的一个帧中初始化的对象引起的。

如果发生这种情况,那么根据情况,您可能希望:

  • 查看代码以查找潜在的内存泄漏
  • 如果这些对象表示某些数据 实际上想要在帧之间传递,那么请考虑使用其字符串化形式。

答案 2 :(得分:-2)

解决方案 - 确保在任何脚本语句之前放置所有META语句。