私はそれを割り当てるときに、なぜ、resizeイベントは、常にタイムアウトでハンドラを発射されましたか?

StackOverflow https://stackoverflow.com/questions/1262774

質問

私はサイズ変更イベントが発生し、私のかなりの量のサイズ変更コードたびに呼び出すことはありませんように、

私は私のwindow.resizeハンドラにタイムアウトを割り当てられました。私のコードは次のようになります:

<script>
function init() {
  var hasTimedOut = false;
  var resizeHandler = function() {
    // do stuff
    return false;
  };

  window.onresize = function() {
    if (hasTimedOut !== false) {
      clearTimeout(hasTimedOut);
    }
    hasTimedOut = setTimeout(resizeHandler, 100); // 100 milliseconds
  };
}
</script>
<body onload="init();">
...
etc...

IE7(そしておそらく他のバージョン)で、あなたがこれを行う際にresizeイベントは常に発火することが表示されます。より正確には、それはすべてのタイムアウト時間後に起動します - この場合は100ミリ秒を

すべてのアイデアはなぜか、どのようにこの動作を停止するには?私は本当にむしろ、単一のサイズ変更に発射し、すべてのサイズを変更するイベントのための私のサイズ変更コードを呼び出さないと思いますが、これは悪いです。

役に立ちましたか?

解決

スタッフコードを実行するあなたの//では、上、左、幅、高さ、ボーダー、マージンやパディングプロパティのいずれかを操作するのですか?

あなたは意図せずに意図せずに再帰をトリガー意図せずに再帰をトリガ再帰をトリガすることができる...

他のヒント

IEにresizeイベントを修正する方法

また、あなたの...プロパティで "scunliffe"」のための答えを参照してください?

(すでに修正のタイムアウトを実装しているとして、あなたが知っている必要がある)行われているサイズを変更するときに、

IEは確かに常にそのサイズ変更イベントを発生ん。

私は私のテストページで、あなたのコードを使用して、あなたが見ている結果を再現することができています。

私は1000年の代わりに、100にタイムアウトを増やす場合は、

しかし、問題が消えるあなたはあなたのために働くかを確認するために、異なる待ち値で試してみたいことがあります。

ここで私がを使用したテストページです:それはうまく動を持っています待つ期間はすでにあなたがプレイするために設定ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top