0

次のHTMLがあると仮定します

<div id="box" style="display:none;">Hello World</div>
<button id="showbutton">Show The Box</button>

そして、次のJQueryボタンハンドラーでdivを表示します

$('#showbutton').click(function() {
    console.log('test');
    $('#box').show();
});

console.logステートメントに注意してください。新しく開いた IE9 ブラウザでボタンをクリックしても機能しません。コンソール オブジェクトがまだ初期化されていないようです。しかし、F12 キーを押して開発者コンソールを開くと、ハンドラーが機能します。

この動作は、Chrome/Firefox には存在しません。

これは IE のコンソール オブジェクトの予想される動作ですか? IE での JavaScript コンソール オブジェクトのサポートに関連するドキュメントはありますか?

デモ用の JSFiddle はhttp://jsfiddle.net/6tHB5/です。

IE で問題を再現するには、最初にブラウザを閉じ、ブラウザを再度実行してから、開発者コンソール (F12) を開かずにボタンをクリックする必要があります。

4

2 に答える 2

3

はい、残念ながらこれが IE のしくみです。考えられる解決策がいくつかあります。

JS エラーを回避したい場合は、事前に確認できます。

$('#showbutton').click(function() {
  if (console) console.log('test');
  $('#box').show();
});

log自動チェックする独自の関数を作成します。

function log(){
  if (console) console.log.apply(console, arguments);
}

作業を楽にするために、ページの上部で次のようにコンソールをモックアウトすることもできます。

if (!window.console) window.console = {log: function(){}};
于 2013-05-08T02:01:42.450 に答える
0

IE 9 では、コンソール オブジェクトは開く前に定義されていないため、ログに記録する前に確認する必要があります。

$('#showbutton').click(function() {
  if (typeof console != 'undefined') console.log('test');
  $('#box').show();
});
于 2014-06-06T12:23:02.783 に答える