28

すべてのブラウザがこれをサポートしていますか? を使用してエラーを出力したいのですがconsole.log()、これがすべてのブラウザでサポートされているかどうか疑問に思っていましたか?

console.log("Error etc");
4

8 に答える 8

13

console.logいいえ、標準の一部ではなく、DOM の拡張であるため、すべてのブラウザがサポートしているわけではありません。したがって、その存在を当てにするべきではありません。コードの回復力を高めるには、コードが存在しないと想定し、それに応じてコーディングする必要があります。

于 2012-12-29T23:04:23.147 に答える
12

私は過去にこのようなことをしました:

// 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、正気を保つ以外のことをしたいと思うかもしれません...

http://jsfiddle.net/4dty5/

于 2013-01-22T22:17:50.567 に答える
9

現在は2015 年 8 月で、この質問に対する現在の答えは次のとおりです。

モバイルおよびデスクトップのすべての主要なブラウザーは、console.log をサポートしています。(カニウス)

これは標準の一部ではありませんが、完全な最新ブラウザーの期待される成果物です。

でも:

古いブラウザー ( IE<10 )、より多くのモバイル ブラウザー、または実験的なブラウザーを実行しているユーザーをサポートする必要がある場合は、存在することを確認するためにポリフィル( 1、2、3、4 )を使用することをお勧めしますwindow.console

すべてのブラウザーのWebWorkersで機能するとは限りません。( MDN )

UC Browser と Opera Mini では関数は実行されますが、出力は表示されません。(カニウス)

しかし、現在の大多数の Web ユーザーにとっては、console.log期待どおりに機能すると想定できます。

于 2015-08-12T11:39:26.717 に答える
8

ラッパー関数を作成します。

function log(text) {
  if (window.console) {
     window.console.log(text);
  }
}
于 2012-12-29T23:06:20.593 に答える
8

このコードは、関数が存在するかどうかを確認し、存在しない場合はダミーを作成します。クレジット: StackOverflow

if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };
于 2014-04-03T18:55:50.117 に答える
7

ほとんどのブラウザーは実行しますが、Internet Explorer 9 には問題があり、デバッグ ウィンドウを開かない限り、JavaScript を実行できません。その問題の解決策を見つけるのに何時間もかかりました。

于 2012-12-29T23:04:39.647 に答える
1

が利用できない場合の回避策を次に示し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);
    };
  }
于 2015-02-13T11:06:48.500 に答える
0

すべてのブラウザーがこれをサポートしているわけではありませんが、小さなコードのチャンクで実現できます。

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, " "));
  }
}
于 2013-12-11T16:52:30.253 に答える