自从升级到 Firefox 4.0 后,我注意到我偶尔会在控制台中收到一条错误消息:
尝试在已清除的范围内运行 compile-and-go 脚本
目前我在网上能找到的唯一信息是在mozilla groups 论坛上,建议它与会话恢复有关。就我而言,虽然我无法可靠地重现该错误,但它随时都会发生,而不仅仅是在恢复之后。
这是怎么回事?如何停止错误?
自从升级到 Firefox 4.0 后,我注意到我偶尔会在控制台中收到一条错误消息:
尝试在已清除的范围内运行 compile-and-go 脚本
目前我在网上能找到的唯一信息是在mozilla groups 论坛上,建议它与会话恢复有关。就我而言,虽然我无法可靠地重现该错误,但它随时都会发生,而不仅仅是在恢复之后。
这是怎么回事?如何停止错误?
对我来说(Firefox 11、Firebug 1.9.1)有时会在我刷新页面(F5 或 CTRL+F5)之后,而调试器在断点处暂停。
解决方案似乎是继续执行脚本,只有在 Firebug没有暂停时才刷新页面。
就我而言,这是document.write
导致 Windows 上 Firefox 4、5、6 出现问题的方法。Linux 版本不受影响。我必须做的是覆盖document.write
方法。
我知道现在document.write
不应该使用它,但是deployJava.js
由 Sun/Oracle 编写的标准 Java Applet 部署脚本正在使用它。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
// e.g. $('#somewhere').html(documentWriteOutput);
</script>
我希望这有帮助。但是,我在互联网上看到了很多对我不起作用的“解决方案”。这可能意味着“尝试在已清除的范围内运行 compile-and-go 脚本”是 Firefox JavaScript 引擎问题/错误。
我注意到,如果在文档完成加载后使用 document.write 写入文档(例如,在从 JQuery 的 $(document).ready() 方法调用的函数中),可能会发生此错误。发生这种情况时,Firefox 似乎会丢弃旧文档并编写新文档。我不知道这是否是新行为。似乎当您尝试对旧文档进行操作时,例如使用 JQuery 选择器,您会收到此错误。对我来说,修复有问题的脚本以在文档加载后不调用 document.write 修复了错误。
我注意到,如果我禁用缓存,我将不再在控制台中收到此错误。
如果禁用了 Firebug(在我的情况下为 1.8),则不会发生该错误。
检查您的代码是否存在重复的元缓存控制并删除其中之一:
<meta http-equiv="cache-control" content="no-cache" />
它与萤火虫无关。禁用萤火虫时它“消失”的原因是您不再看到异常。造成这种情况的原因是有一个处理程序附加到一个现在为空但未正确清理的事件。您需要确保处理程序被正确处理,否则事件仍会触发对处理程序的引用。
我也遇到了这个问题,但是我重新安装了 FireFox。
之后错误消失了。
当我尝试在从同一域 iframe 附加的元素上添加事件时出现此错误。添加了 clone() 并且错误停止了。
它是:菜单 Firebug -> 控制台 -> 显示 Chrome 错误
关掉,故事结束;)