すべてのブラウザがこれをサポートしていますか? を使用してエラーを出力したいのですがconsole.log()
、これがすべてのブラウザでサポートされているかどうか疑問に思っていましたか?
console.log("Error etc");
すべてのブラウザがこれをサポートしていますか? を使用してエラーを出力したいのですが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;
console
これをJSの「一番上」に置くことができます。これは、をサポートしていないブラウザでデバッグを行う必要があり、すでに呼び出している他のJSソースを変更する必要がない場合に非常にうまく機能します。console.log
あらゆる所に。もちろんalert
、正気を保つ以外のことをしたいと思うかもしれません...
現在は2015 年 8 月で、この質問に対する現在の答えは次のとおりです。
モバイルおよびデスクトップのすべての主要なブラウザーは、console.log をサポートしています。(カニウス)
これは標準の一部ではありませんが、完全な最新ブラウザーの期待される成果物です。
でも:
古いブラウザー ( IE<10 )、より多くのモバイル ブラウザー、または実験的なブラウザーを実行しているユーザーをサポートする必要がある場合は、存在することを確認するためにポリフィル( 1、2、3、4 )を使用することをお勧めします。
window.console
すべてのブラウザーのWebWorkersで機能するとは限りません。( MDN )
UC Browser と Opera Mini では関数は実行されますが、出力は表示されません。(カニウス)
しかし、現在の大多数の 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);
};
}
すべてのブラウザーがこれをサポートしているわけではありませんが、小さなコードのチャンクで実現できます。
John Resig (jQuery の作成者) は、彼の著書「Secrets of Javascript Ninja」で、クロスブラウザーのconsole.log
問題を処理する非常に単純なコードを記述しています。彼は、すべてのブラウザで動作するログ メッセージが欲しいと説明し、次のようにコーディングしました。
function log() {
try {
console.log.apply(console, arguments);
} catch(e) {
try {
opera.postError.apply(opera, arguments);
}
catch(e) {
alert(Array.prototype.join.call( arguments, " "));
}
}