8

我今天在IE6中遇到了这个问题(但可在所有最新版本的IE中重现)。无法从释放的脚本执行代码 - IE6 IE7 IE8 IE9

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

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

我也知道,要解决这个问题,所以我张贴它下面

回答

16

首先,你需要找到消息源。

IE以其糟糕的错误报告而闻名,但幸运的是IE9看起来有些能力。如果这个错误发生在IE6,IE7或IE8中,它也会出现在IE9中,所以请使用IE9进行调试(为了您的理智)

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

IE9现在应该给你在控制台上的文件和线路指示,耶!

通常出现问题的是一个回调,它会在延迟一段时间之后执行,或者通过setTimeout或者由于Ajax请求。如果窗口,文档或框架的回调被定义在卸载中,那么当它试图执行你的回调函数时你会得到这个消息。

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

-2

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

+2

你自己测试一下吗?或者是从另一个网站复制?我根本没有元标签,我仍然得到这个错误 – Mike 2013-08-23 11:19:14

0

如果您的页面使用多个框架,则此错误可能是由于在初始框架从页面中移除后,在其他框架中使用的一个框架中初始化的对象造成的。

发生这种情况时,则根据情况,你可能想:

  • 检查代码,寻找潜在的内存泄漏
  • 如果这些对象代表了一些数据,你居然要帧之间传递,然后考虑使用它们的字符串化表单。
相关问题