すべてのブラウザーで正常に動作する JS スクリプトがあります。しかし、驚いたことに、IE では最初の試行では機能しません。
ページをロードした後、F12 を押して (ie デバッガーを開き)、ページを更新すると、問題なく動作します。他のブラウザと同じように!しかし、この作業では、F12 を押さなければなりません。
ie のデバッガーは、開いたときに何かを行いますか? 解決策が見つかりません!
前もって感謝します。
すべてのブラウザーで正常に動作する JS スクリプトがあります。しかし、驚いたことに、IE では最初の試行では機能しません。
ページをロードした後、F12 を押して (ie デバッガーを開き)、ページを更新すると、問題なく動作します。他のブラウザと同じように!しかし、この作業では、F12 を押さなければなりません。
ie のデバッガーは、開いたときに何かを行いますか? 解決策が見つかりません!
前もって感謝します。
デバッガーを開いていない場合、IE は console.log などがないものと見なし、未定義の関数を呼び出すとエラーが発生します。F12 を押すとコンソールが表示されるので、console.log は未定義ではなくなります。
これをコードの先頭に置くことで回避できます。
if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };
コードから console.log を編集するのではなく、未定義の場合は「何もしない」関数として定義することで、コンソールが存在しない場合にブラウザが何もしないようにするだけです。
js ファイルのサイズを小さくしたい場合 (特にモバイルでの使用に重要)、最終的にはリリース バージョンの詳細ログを削除する必要があります。
前回の記事の拡張版
if (!('console' in window)) {
var stub = function() { ; };
window.console = {
log : stub,
info : stub,
warn : stub,
error : stub,
assert : stub
};
}
必要な場合にのみスタブをインストールするこの新しいものを投稿しています
/**
* On IE console is not set if not opened and debug doesn't exists
*/
(function() {
if (!('console' in window)) { window.console = {}; }
var kind = ['log', 'info', 'warn', 'error', 'assert', 'debug'];
var stub = function() { ; };
for (var i = 0; i < kind.length; i++) {
if (kind[i] in window.console) { continue; }
window.console[kind[i]] = stub;
}
})();
console.log()
スクリプトに次のようなものはありますか?F12を押すまでコンソールがないため、これで説明できるかもしれません