私は、テキストエリアでキーボードイベントをキャプチャすることに依存するJavascriptアプリケーションを使用しています。 Firebug(1.10.2)を使ってFirefox(14.x)上でテストしてデバッグしている間、ブレークポイントをアクティブにしてデバッガが動作しているとき、アプリケーションの動作が異なっていることに気付きました。Firebug(または他のウェブデバッガ)がデバッグに使用されたタイミングを検出します
私はFirebugを検出する方法を知っていますが、Firebugが実際にデバッグに使用されているときに(Javascriptで)検出することが可能かどうかを知りたいと思いますか?
編集:ここにいくつかのランダムなサイトの入力ボックスに
This site漁獲キーイベントの例があり、文字コードを出力し、テキスト表現と押されたキー(すなわち代わる「入力」についてEnterキー)または大文字(文字の場合)。
私はChromeでデバッグし、リスナー機能にブレークポイントを設定すると、スクリプトを再開するときにブレークポイントに達すると何も起こりません。通常はテキストが通常どおり出力されます。
FirefoxでFirebugでデバッグするとき:以前は "e"の文字を押して、入力バーに "E"の文字が含まれているとしましょう。ブレークポイントをオンにし、文字「z」を押します。 Firebugはブレークポイントで停止しますが、入力バーには "E"ではなく "Ez"というテキストが表示されます。スクリプトを再開すると、このテキストは "Z"に置き換えられます。
別のFirefoxデバッガ(Venkman 0.9.89)を試してみましたが、同じことが起こりました。だから私の推測は、これはFirefoxの問題ではなく、デバッガの問題です。だから、より一般的な質問かもしれないが、それはいつJavascriptコードがデバッグされていることが検出できますか?
これは非常に奇妙な要件です。アプリケーションの動作はどう違うのですか?おそらく、アプリケーションの動作を回避しようとするよりも、アプリケーションの動作に対処して修正する必要があります。通常、デバッグ時には異なる動作をしてはいけません。その背後にはアーキテクチャ上の問題があるかもしれません。そこにある他の多くのデバッガはどうですか?それらをすべて検出しなければならないでしょう... –
Firebugが動作していない場合でもブレークポイントやその他の相違点がなくても、Firebugが動作しているときは、動作が異なりますか? –
私はイベントをキャプチャして処理し、それを防止しています。作業を行うメソッドをデバッグしている間、イベントは実際にはメソッドが呼び出される前に発生するため、私はそれを防ぐことができません。 Firebugがオフになっている間に私のアプリケーションが動作するので、この動作はFirefoxの問題ではないと思います。別のデバッガを見つけることは私には起こりませんでした。アイデアに感謝します!また、Firebugはオンになっていますが、デバッグはしていませんが、すべて正常に動作しています。 – Bikush