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

8
今天我在IE6上遇到了这个问题(但是在所有较新版本的IE上都可以重现)。
我注意到很多人都遇到了这个问题,但我没有看到一个非常实用的解决方法。
似乎有一些其他的解决方案漂浮在头部HTML文档中脚本标记和元标记的顺序方面。我还没有确认这一点,但这里有一个链接: 什么原因导致错误“无法执行来自释放脚本的代码” 我也知道这个问题的解决方法,所以我会在下面发布它。
3个回答

16

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

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

在IE9中打开Web开发人员控制台(按F12键),并执行生成此错误的步骤。

现在,IE9应该会在控制台上给出文件和行指示,太好了!

通常会出现问题的是在一些延迟后执行的回调函数,可能是由于setTimeout或Ajax请求引起的。如果定义回调函数的窗口、文档或框架被卸载,则在尝试执行回调函数时会收到此消息。

其他浏览器似乎忽略了这个问题,这很好吧。为了让IE也做同样的事情,只需将回调包装在try-catch块中(我不知道回调会评估为什么,我认为它不会评估为undefined)。如果您想要更精确的错误处理,或者如果您实际上想在发生此情况时采取措施,则可能可以这样做,并请在此处发帖,因为我很好奇实际上需要这种情况的用例是什么。


0
如果您的页面使用了多个框架,那么这个错误可能是由于在一个框架中初始化的对象在初始框架从页面中移除后在其他框架中被使用所导致的。
当发生这种情况时,根据情况,您可能需要:
  • 检查代码以寻找潜在的内存泄漏
  • 如果这些对象代表您确实希望在框架之间传递的某些数据,则考虑使用它们的字符串形式。

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

2
你自己测试了吗?还是这是从另一个网站复制的?我根本没有元标签,但我仍然得到了这个错误。 - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接