2011-01-27 17 views
0

ブラウザのサイズが変更されなくなったときを検出しようとしています。次の作品は、しかし、グローバルvarsに依存します。これを避けるためにクロージャを使用する方法はありませんか?もしそうなら、どうですか?ResizeStop名前空間の汚染なし

var rtime = new Date(1, 1, 2000, 12,00,00); 
    var timeout = false; 
    var delta = 200; 

    $(document).ready(function() {   

     $(window).resize(function() { 
      rtime = new Date(); 
      if (timeout === false) { 
       timeout = true; 
       setTimeout(resizeend, delta); 
      } 
     }); 

    }); 

    function resizeend() { 
     if (new Date() - rtime < delta) { 
      setTimeout(resizeend, delta); 
     } else { 
      timeout = false; 
      $("#log").append("<span>resizeend</span> "); 
     }    
    } 

**スクリプトのクレジット:http://vidasp.net/resizeend.html

答えて

0
(function(){ 
var rtime = new Date(1, 1, 2000, 12,00,00); 
var timeout = false; 
var delta = 200; 

$(document).ready(function() {   

    $(window).resize(function() { 
     rtime = new Date(); 
     if (timeout === false) { 
      timeout = true; 
      setTimeout(resizeend, delta); 
     } 
    }); 

}); 

function resizeend() { 
    if (new Date() - rtime < delta) { 
     setTimeout(resizeend, delta); 
    } else { 
     timeout = false; 
     $("#log").append("<span>resizeend</span> "); 
    }    
} 
})(); 

はsetTimeoutを、それをトリガしたときに閉鎖

+1

が、その原因のresizeendは未定義することはありませんか? – Matrym

+0

これは自己呼び出しannon関数のプライベート変数ですから – qwertymk

関連する問題