Firefox 4.0にアップグレードして以来、コンソールに次のようなエラーが時々表示されることに気付きました。
クリアされたスコープでcompile-and-goスクリプトを実行しようとします
ネット上でこれについて見つけることができる唯一の情報は mozilla groups forum にあり、セッションの復元と関係があることが示唆されています。私の場合、エラーを確実に再現することはできませんでしたが、復元後だけでなく、いつでも発生します。
どうしたんだ?エラーを停止するにはどうすればよいですか?
私(Firefox 11、Firebug 1.9.1)の場合、デバッガーがブレークポイントで一時停止している間にページ(F5またはCTRL + F5)を更新すると、時々発生します。
解決策は、スクリプトの実行を継続し、Firebugがnotpausedの場合にのみページを更新することです。
私の場合、document.write
Windows上のFirefox 4、5、6で問題を引き起こすメソッド。 Linuxバージョンは影響を受けません。私がしなければならなかったのは、document.write
方法。
document.write
は最近使用されるべきではありませんが、deployJava.js
、標準Java Sun/Oracleによって記述されたアプレット展開スクリプトが使用しています。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)が無効になっている場合、エラーは発生しません。
私もこの問題を抱えていましたが、FireFoxをきれいに再インストールしました。
その後、エラーはなくなりました。
同じドメインiframeから追加された要素にイベントを追加しようとすると、このエラーが発生しました。 clone()が追加され、エラーが停止しました。
重複したメタキャッシュコントロールのコードを確認し、そのうちの1つを削除します。
<meta http-equiv="cache-control" content="no-cache" />
Firebugとは関係ありません。 firebugが無効になっているときに「消える」のは、例外が表示されなくなったためです。この原因は、現在ヌルであるが適切にクリーンアップされていないイベントにハンドラーが接続されていることです。ハンドラーが適切に破棄されていることを確認する必要があります。そうでない場合、イベントはハンドラーへの参照を起動します。
メニュー:Firebug-> Console-> Show Chrome Errors
スイッチオフ、ストーリーの終わり;)