2

アプリケーションに function.apply と function.call を try/catch ブロックでラップするコードがあります。エラーをキャッチし、arguments.caller を使用して疑似スタックを構築するのに便利ですが、IE のデバッガーで大混乱を引き起こします。

URL パラメーターでラッピングをオフにすることはできますが、デバッガーが接続されている場合は自動的にオフにしたいと考えています。デバッガーを検出する方法が見つかりません。何か案は?

4

2 に答える 2

2

IE8 の場合はわかりませんが、デバッガーが IE9/IE10/IE11 で実行されているかどうかは、以下を確認することで検出できます。

var isIeDebugging = !!window.__IE_DEVTOOLBAR_CONSOLE_COMMAND_LINE || ('__BROWSERTOOLS_DOMEXPLORER_ADDED' in window);

たとえば、http://jsbin.com/IJOwuje/5を参照してください。

ただし、IE9/IE10 では、デバッガーが閉じられた場合でも、デバッガーを一度だけ実行したウィンドウに対して true に設定されます。

また、IE11 では、さまざまな window.__BROWSERTOOLS* キーが、開いているか使用されているデバッガー タブに応じてのみ表示されるように見えるため、デバッグ フレームが開いているかどうかを確認するのに 100% 信頼できるわけではありません...

于 2013-11-19T01:26:43.987 に答える
0

これはあなたが望んでいた答えではありませんが、私は過去に、URL にハッシュがある場合は、次のような秘密のコードをチェックすることから始まるローダー JS を少し用意することでこれを処理しました。

mysite.com/#mXVa

そのため、ローダーがチェックし、location.hash == 'mXVa' の場合、ローダーは縮小されたエラーを多用するさまざまなスクリプトではなく、ページ上のすべてのスクリプトのデバッグ バージョンをロードします (try/catch などはありません)。

于 2011-02-03T18:21:30.847 に答える