错误:尝试在已清除的作用域上运行编译脚本


67

自从升级到Firefox 4.0之后,我注意到控制台有时会出现错误:

尝试在已清除的范围内运行编译脚本

我目前在网上可以找到的关于此的唯一信息是在mozilla groups论坛上,该论坛建议与会话还原有关。就我而言,尽管我无法可靠地重现该错误,但它随时发生,而不仅仅是在还原之后发生。

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


只是问:您是否使用window.open在脚本中操作子窗口?
请善待您的mod。

从外观上看,它似乎是真正的错误。有传言说,它将在下一个错误修正版本中消失。
请善待您的mod。

@Rodrigo,您是否有来源链接?
尼克

3
最近有一些Bugzilla条目引用了此类错误,例如bugzilla.mozilla.org/show_bug.cgi?id=635548
请善待您的mod。

1
当我将网页链接到自身时,这开始发生在我身上。
Brainjam 2011年

Answers:


9

对我来说(Firefox 11,Firebug 1.9.1),有时在调试器暂停在断点上时刷新页面(F5或CTRL + F5)后有时会发生。

解决方案似乎是继续执行脚本,并且仅在暂停Firebug时刷新页面


7

就我而言,这是document.write导致Windows上Firefox 4、5、6出现问题的方法。Linux版本不受影响。我要做的是覆盖document.write方法。

我知道document.write这些天不应该使用,但是deployJava.jsSun / 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>

我希望这有帮助。但是,我在Internet上看到了很多对我不起作用的“解决方案”。这可能意味着“试图在明确的范围内运行编译脚本”是Firefox JavaScript引擎问题/错误。


6

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


2
document.write加载后使用时,丢弃总是会发生。但是,“清除范围”错误是新错误(并且显然不仅由document.write引起)。
马修·弗拉申

我在document.write之后将附加到窗口的事件遇到同样的问题。(另请参阅我对这个问题的回答:stackoverflow.com/a/8673541/24197
sprugman 2012年

5

我注意到,如果禁用缓存,则不再在控制台中收到此错误。


清理缓存有助于我摆脱这个错误。我也有FF4。感谢您的建议!
podeig 2011年

另一种方法是移位刷新(即,按住屎然后单击刷新),这将强制重新下载页面上的所有内容。不像清除整个缓存那样激烈,但是看起来效果也一样。
shmeeps

Ctrl + F5刷新缓存。不移。
乔尼奥2011年

添加Shift(按住Ctrl + Shift + R或单击Shift并同时单击“刷新”)会启动硬刷新,从而绕过缓存。
Grault 2012年

2

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


1
对。我认为这与Firebug和Firefox有关
2012年

1

检查您的代码中是否有重复的元缓存控件,然后删除其中之一:

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

1

我也有这个问题,但是我重新安装了FireFox。

之后,错误消失了。


1

当我尝试在从同一域iframe追加的元素上添加事件时遇到此错误。添加了clone(),错误停止了。


1

它与萤火虫无关。禁用Firebug时,它“消失”的原因是您不再看到该异常。造成这种情况的原因是,有一个附加到事件的处理程序,该事件现在为null,但未正确清理。您需要确保正确处理了处理程序,否则该事件仍然会触发对该处理程序的引用。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.