2

IE 開発者ツールを開くと、 AJAXアプリケーションを実行するという観点から、何が変更されますか?

現在、シュレディンガーのバグを追跡しています。IEのPrimeFacesドロップダウンリストについてです。クリックしても開かないことがあり、ブラウザを最大化するか、コンテンツのズームを解除すると、ブロックが解除されます。それらのドロップダウンは、通常の入力の基本で実現されているため、div が付加されているため、そのドロップダウン ポップアップを表示する場所を誤って計算するものであると推測しました。AJAX エラーも想定しています。

しかし、IE Developers Tools を開いた後、エラーを再現することはほとんど不可能です。コンソールにエラーは表示されず、AJAX リクエストがハングすることもありません。さらに、すべてがより機能しているように見えます。

このエラーは IE のみのものであるため、開発者ツールを使用してデバッグするしかありません。しかし、それらが開かれると、量子力学のように、観測は何らかの形で状態を変化させるようです...

では、これらの開発者ツールを開くことで、バグが表示されないようにするために何が変更されるのでしょうか?

--編集-- とは関係ありませconsole.log。見えない要素のサイズを計算する問題です。この問題は、本文にスクロールを追加することで解決されました。ただし、IE 開発者ツールがこれらの計算にどのように影響していたかという問題は未解決です。

4

1 に答える 1

1

常に using を含めたい場合はconsole、ポリフィルを使用することをお勧めします。

(function(b){
    var a=0;
    var c=function(){};
    var d=["log","assert","clear","count","debug","dir","dirxml","error","exception","group","groupCollapsed","groupEnd","info","profile","profileEnd","table","time","timeEnd","timeStamp","trace","warn"];
    b.console=b.console||{};
    for(;a<d.length;a++){
        b.console[d[a]]=b.console[d[a]]||b.console["log"]||c;
    }
})(window);

これは、読みやすくするために縮小した例です。少し前に見つけて、一部を修正したものです。私が変更した主な点は、ブラウザのネイティブによって元々実装されていなかったメソッドを呼び出すと、 が呼び出されることだと思いconsoleますconsole.logconsole.logネイティブに実装されていない場合は、空の関数を呼び出すだけです。このコードの元のバージョンには、このフォールバックが含まれていませんでしたconsole.log

consoleこれにより、呼び出しが失敗しないことが「保証」されます。変数を変更して、d確実に使用する呼び出しのみを含めることができます。そうしないと、余分な不要な処理が発生します。

于 2013-01-31T15:29:35.273 に答える