6

テキストエリアでのキーボードイベントのキャプチャに依存するJavascriptアプリケーションがあります。Firefox(14.x)でfirebug(1.10.2)を使用してテストおよびデバッグしているときに、ブレークポイントがアクティブでデバッガーが機能している場合、アプリケーションの動作が異なることに気付きました。

Firebugを検出する方法は知っていますが、Firebugが実際にデバッグに使用されているときに(Javascriptを使用して)検出できるかどうかを知りたいですか?

編集:これはいくつかのランダムなサイトの例です

このサイトは、入力ボックスでキーイベントをキャッチし、文字コードを出力して、押されたキーをテキスト表現(つまり、Enterキーの場合は「Enter」)または大文字(文字の場合)に置き換えます。

Chromeでデバッグし、リスナー関数にブレークポイントを設定すると、(予想どおりに)ブレークポイントに達しても何も起こりません。スクリプトを再開すると、テキストは通常​​どおりに出力されます。

FirefoxでFirebugを使用してデバッグする場合:以前に「e」文字を押したときに、入力バーに「E」というテキストが含まれているとします。ブレークポイントをオンにして、文字「z」を押します。Firebugはブレークポイントで停止しますが、入力バーに「E」ではなく「Ez」というテキストが表示されるようになりました。スクリプトを再開すると、期待どおりにこのテキストが「Z」に置き換えられます。

別のFirefoxデバッガー(Venkman 0.9.89)を試してみたところ、同じことが起こりました。ですから、これはFirefoxの問題であり、デバッガの問題ではないと思います。したがって、質問はより一般的かもしれませんが、Javascriptコードがデバッグされているときにそれを検出できますか?

4

2 に答える 2

2

これは私がFirebugを検出するために行うことです:

if (window.console && (window.console.firebug || window.console.exception)) {
  // At this point, Firebug is enabled
}

最初のテストは、コンソールが実際に存在することを確認するために重要です。2番目のテストは、Firebugをテストしますが、古いバージョンのコンソールでのみ機能します。3つ目は、Firebugが「例外」を追加するときにあります。これは、プロパティ「例外」がFirebugのプラグインによって追加されるためです。

(無関係ですが興味があります:window.console.exceptionFirebugがコンソールにメッセージを表示するために使用する方法です。たとえば、次のように入力します。

>>> window.console.exception("A message", {param:'Value'})

渡されたオブジェクトのダンプとともに、非常によく知られているように見えるエラーが表示されます。

メルク。

于 2012-08-17T00:36:35.917 に答える