Firefoxにdebugger
キーワードが表示された場合に停止しないように指示するにはどうすればよいですか?
ウェブサイトがデバッグ保護を使用してタイマーを使用してオンザフライでdebugger
ステートメントを生成する場合に備えて、継続的なdebugger
ループを回避する必要があります。
これが例です。デバッグコンソールを開くと、スクリプトは大量のデバッガステートメントをスローし、通常のデバッグ作業をブロックします。
ウェブサイトの例は http://www.avito.r -ロシアで最大の求人サイトです。それを開いてからデバッガコンソールを開くと、生成されたスクリプトのdebugger
キーワードですぐに停止します。
(function(x/**/) {
(function(f){
(function a(){
try {
function b(i) {
if(
(''+(i/i)).length !== 1 ||
i % 20 === 0
) {
(function(){}).constructor('debugger')();
} else {
debugger;
}
b(++i);
}
b(0);
} catch(e) {
f.setTimeout(a, x)
}
})()
})(document.body.appendChild(document.createElement('frame')).contentWindow);
});
明らかに、このページは、人々がその構造を使用してJavaScriptコードをデバッグすることを回避しようとしています。
Firebugでのデバッグ
Firebugdebugger
ステートメントに無効なブレークポイントを設定できます。このページは可変の呼び出しスタック深度を生成するため、JavaScriptを適切にデバッグできるように、すべての無効なブレークポイントを設定する必要があります。残念ながら、Firebugは、これらのブレークポイントを設定することになるとバグがあるようです。
さらに、Firebugにはすべてのdebugger
ステートメントを無視するオプションがありません。
したがって、JavaScriptをデバッグする必要がなく、HTML、CSS、ネットワークリクエストなどのみをデバッグする必要がある場合は、スクリプトパネルを無効にするだけで、これらの煩わしいデバッガーの停止を回避できます。これを行うには、スクリプトタブを右クリックし、オープニングメニュー内の有効をクリックします。
注: Firebugの開発は中止されています であるため、拡張リクエストを提出することは無意味です。
Firefox DevToolsでのデバッグ
残念ながら、 Firefox DevTools は現在、debugger
ステートメントでの停止を回避することを許可していません。したがって、 バグ1300934 (例として同じWebサイトに言及)、 バグ925269 および/または 問題828 が修正されるまで待つ必要があります。
さらに、Debuggerパネルを完全に無効にする方法はありません。これは bug 1247198 として提出されます。
Greasemonkeyを使用する場合は、setTimeout/setInterval
関数を書き換えてスクリプトを無効にすることができます
unsafeWindow.setTimeout = function () {};
in chromeブレークポイントを編集して、常にfalseの条件を設定すると、デバッガーにヒットしなくなります。
もう1つのオプションは、「ここで一時停止しない」を使用することです。
firefoxの場合、ブレークポイントにヒットしたくないスクリプトを blackbox できます。私にとっては、Firefoxがハングアップします。しかし、ブラウザを再起動すると。それなら大丈夫です