すべてのブラウザがこれをサポートしていますか? console.log()
を使用してエラーを出力したいのですが、これがすべてのブラウザーでサポートされているかどうか疑問に思いましたか?
console.log("Error etc");
いいえ、すべてのブラウザがconsole.log
をサポートしているわけではありません。これは、標準の一部ではなく、DOMの拡張であるため、その存在を当てにすべきではないためです。コードを弾力性のあるものにするためには、それがしないであると想定し、それに応じてコーディングする必要があります。
私は過去にこのようなことをしました:
// Log to native console if possible, alert otherwise
window.console = typeof window.console === 'undefined'
? {log:function(/* polymorphic */){alert(arguments)}}
: window.console;
あなたはそれをあなたのJSの「トップ」に置くことができ、console
をサポートしないブラウザでデバッグを強制され、そしてあなたが既にconsole.log
を呼び出している他のJSソース。もちろん、正気を保つためにalert
以外のことをしたいかもしれません...
現在2015年8月です。この質問に対する現在の答えは次のとおりです。
モバイルおよびデスクトップ上のすべての主要ブラウザはconsole.logをサポートします( caniuse )
これは標準の一部ではありませんが、完全な最新ブラウザの期待される成果物です。
しかしながら:
古いブラウザー( IE <1 )、より多くのモバイルブラウザー、または実験的なブラウザーを実行しているユーザーをサポートする必要がある場合は、ポリフィル( 1 を使用することをお勧めします。 、 2 、、 4 )を確認して
window.console
が存在します。すべてのブラウザーのWebWorkersでは機能しない可能性があります。 ( [〜#〜] mdn [〜#〜] )
UCブラウザとOpera Miniでは、関数は実行されますが、出力は表示されません。( caniuse )
しかし、現在、大多数のWebユーザーは、console.log
は期待どおりに動作します。
ラッパー関数を作成します。
function log(text) {
if (window.console) {
window.console.log(text);
}
}
このコードは、関数が存在するかどうかを確認し、存在しない場合はダミーを作成します。クレジット: StackOverflow
if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };
ほとんどのブラウザーは動作しますが、Internet Explorer 9には問題があります。デバッグウィンドウを開いていない限り、JavaScriptが実行されません。その問題の解決策を見つけるのに何時間もかかった。
console.log()
が使用できない場合の回避策を次に示します。 console.logs
を自分で取得する必要があります。
if (!window.console) window.console = {};
if (!window.console.log)
{
window.console.logs = [];
window.console.log = function (string)
{
window.console.logs.Push(string);
};
}
すべてのブラウザでサポートされているわけではありませんが、小さなコードで実現できます。
彼の著書「Secrets of Javascript Ninja」で、John Resig(jQueryの作成者)は、クロスブラウザーconsole.log
issues。彼は、すべてのブラウザで機能するログメッセージが必要であることを説明し、以下にそのコードを示します。
function log() {
try {
console.log.apply(console, arguments);
} catch(e) {
try {
opera.postError.apply(opera, arguments);
}
catch(e) {
alert(Array.prototype.join.call( arguments, " "));
}
}