1. ホーム
  2. ジャバスクリプト

[解決済み】IE9はconsole.logをサポートし、それは本当の機能なのか?

2022-04-12 15:11:31

質問

どのような場合に window.console.log Internet Explorer 9 で定義されていますか?

の場合でも window.console.log が定義されています。 window.console.log.applywindow.console.log.call は未定義です。これはなぜでしょうか?

[IE8の関連質問です。 IE8でconsole.logはどうなったのですか? .]

解決するには?

Internet Explorer 9(と8)では console オブジェクトは、特定のタブで開発者ツールを開いているときのみ公開されます。 そのタブの開発者ツールウィンドウを非表示にすると console オブジェクトは、移動した各ページで公開されたままです。 新しいタブを開いた場合、そのタブの開発者ツールも開かなければなりません。 console オブジェクトが公開されます。

は、その console オブジェクトは、どの標準にも属さず、Document Object Model の拡張です。 他の DOM オブジェクトと同様、これはホストオブジェクトとみなされます。 Object また、そのメソッドは Function は、ネイティブの ECMAScript 関数やオブジェクトと同じようなものです。 このため applycall はこれらのメソッドでは未定義です。 IE 9 では、ほとんどの DOM オブジェクトがネイティブの ECMAScript タイプを継承するように改善されました。 開発者ツールは IE の拡張機能 (組み込みの拡張機能ではありますが) と考えられているため、他の DOM と同じ改善は明らかに受けられませんでした。

一応、まだいくつかの Function.prototype メソッドを console メソッドに少し bind() の魔法を使います。

var log = Function.prototype.bind.call(console.log, console);
log.apply(console, ["this", "is", "a", "test"]);
//-> "thisisatest"