0

ウィンドウのサイズ変更イベントに反応するために次のスニペットを使用すると、IE8 でスクリプト エラーが発生しますが、ブラウザーは意図したとおりに関数 'dummyFunc()' を実行します。

var jq = jQuery.noConflict();
var resizeTimer;
  jq(window).resize(function() {
      clearTimeout(resizeTimer);
      //resizeTimer = setTimeout(reloadSlider(), 100, 'JavaScript');
      resizeTimer = setTimeout(dummyFunc(), 100, 'JavaScript');
  });

function dummyFunc() {
    alert('hurra');
}

つまり、問題はブラウザがアラートを出さないことではなく、Internet Explorer に「スクリプト エラー」メッセージが表示されることです。エラーメッセージを取り除く方法についてのヒントをいただければ幸いです。

ありがとうございました

4

4 に答える 4

2

に変更dummyFunc()dummyFuncます。あなたが持っているように、関数をすぐに実行し、undefined(関数呼び出しの結果) を に渡しsetTimeoutます。

代わりに、関数への参照を渡したい:

resizeTimer = setTimeout(dummyFunc, 100, 'JavaScript');
于 2013-08-01T13:46:39.343 に答える
0

スクリプトのデバッグ中に ie8 を実行する必要があります。ページを表示中に F12 を押し、そこからデバッグを開始します。次に、スクリプト エラーが発生するポイントを分析する必要があります。

于 2013-08-01T13:45:37.517 に答える
0

resizeTimer は、最初の setTimeout まで未定義です。試すif(resizeTimer) { clearTimeout(resizeTimer); ...

于 2013-08-01T13:46:39.660 に答える
0

dummyFunc呼び出すことですぐに実行されます。dummyFunc()未定義の関数の戻り値に置き換えられます。

resizeTimer = setTimeout(dummyFunc(), 100, 'JavaScript');

ブレーサー atdummyFuncを省略して、参照として渡します。

resizeTimer = setTimeout(dummyFunc, 100);

あなたが渡した最後のパラメーターを見たことがないので、省略しました。これは、IE8 で非常に簡単にエラーをスローする可能性があります。

于 2013-08-01T13:46:53.143 に答える