错误:尝试在已清除的作用域上运行“即插即用”脚本

从升级到Firefox 4.0以来,我注意到偶尔会在控制台中发现错误:

尝试在清除的范围上运行“编译并转到”脚本

目前我在网上可以find的唯一信息是在mozilla组织论坛上 ,在这里build议这是与会话恢复有关的。 就我而言,虽然我无法可靠地重现错误,但它随时都会发生,而不仅仅是恢复之后。

这是怎么回事? 如何阻止错误?

对于我(Firefox 11,Firebug 1.9.1),当debugging器在断点处暂停时,有时会在刷新页面(F5或CTRL + F5)之后发生。

该解决scheme似乎是继续脚本的执行,并刷新页面只有当萤火虫没有暂停

在我的情况下,它是在Windows上的Firefox 4,5,6导致问题的document.write方法。 Linux版本不受影响。 我所要做的就是覆盖document.write方法。

我知道现在不应该使用document.write ,但是由Sun / Oracle编写的标准Java Applet部署脚本deployJava.js正在使用它。 Google正在使用Google AdSense广告。 document.write无处不在。

 <script> var documentWriteOutput = ''; var got = document.write; document.write = function(arg) { documentWriteOutput += arg; } </script> <script src="badScriptThatIsUsingDocumentWrite.js"></script> <script> runBadScriptThatIsUsingDocumentWrite(); document.write = got; // Do whatever you want with the documentWriteOutput // eg $('#somewhere').html(documentWriteOutput); </script> 

我希望这有帮助。 但是,我在互联网上看到了很多“解决scheme”,这对我来说并不合适。 这可能意味着“尝试在已清除的范围上运行编译后脚本”是一个Firefox JavaScript引擎问题/错误。

我注意到,如果在文档加载完成之后用document.write写入文档(例如,在从JQuery的$(document).ready()方法调用的函数中),则会发生此错误。 发生这种情况时,Firefox似乎丢弃了旧文档并写入了一个新文档。 我不知道这是不是新的行为。 看来,当你试图对旧文档进行操作时,例如使用JQueryselect器,你会得到这个错误。 对于我来说,修复有问题的脚本在文件加载之后不能调用document.write修复了错误。

我注意到,如果我禁用caching,我不会再在控制台中得到这个错误。

如果Firebug(在我的情况1.8)被禁用,错误不会发生。

检查你的代码重复元caching控制,并删除其中之一:

 <meta http-equiv="cache-control" content="no-cache" /> 

我也有这个问题,但我做了一个干净的重新安装FireFox。

之后,错误消失了。

当我尝试添加从同一个域名iframe附加的元素的事件时,我得到了这个错误。 添加克隆()和错误停止。

这与萤火虫无关。 当萤火虫被禁用时,它“消失”的原因是你不再看到exception。 造成这种情况的原因是将处理程序附加到现在为空的事件,但未正确清理。 您需要确保该处理程序已妥善处置,否则该事件仍会触发该处理程序的引用。

它是:菜单萤火虫 – >控制台 – >显示铬错误

关掉,故事结束;)