麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

window.onresize 多次觸發的解決方法

2019-11-20 21:45:07
字體:
來源:轉載
供稿:網友
之前做一個擴展,需要在改變窗口大小的時候保證頁面顯示正常,于是用了 window.onresize 但是發現每次 onresize 后頁面中狀態總是不對,后來查找出來原來是 onresize 事件觸發了多次找成的,于是網上搜集了下解決辦法,整理一下。
//
關于 onresize 事件觸發次數,不同瀏覽器不同,safari, opera, firefox 都是一次(分別只用了一個版本測試,都是較新的);
//ie6 在 quirk 下觸發 2 次,標準下 3 次;ie7,8 在 quirk 和 standard 都是兩次。
復制代碼 代碼如下:

window.onresize = function(){
console.log( 'hello world');
}
onresize 觸發多少次并不重要,重要的是解決辦法:在觸發多次的情況下之調用一次幫定到 onresize 上的函數
//
//debounce 這個詞不知道怎么翻譯,兄弟我非科班出身,不敢輕易翻譯,以免怡笑大方。:)
//
var debounce = function (func, threshold, execAsap) {
var timeout;
return function debounced () {
var obj = this, args = arguments;
function delayed () {
if (!execAsap)
func.apply(obj, args);
timeout = null;
};
if (timeout)
clearTimeout(timeout);
else if (execAsap)
func.apply(obj, args);
timeout = setTimeout(delayed, threshold || 100);
};
}

// 說明代碼不是我寫的。
// 代碼說明:
debounce 接受 3 個參數,后兩個可選;第一個是要 debounce 的函數, 第二個代表 debouce 的時間間隔,第三個在時間段的開始還是結束執行函數;
debounce 返回包裝好的函數,該函數兩次執行間隔至少是 threshold,并且小于 threshold 間隔的調用會重新開始計時( 兩次調用的時間間隔);
把 clearTimeout( timeout ) 換為 timer = null; 返回函數兩次執行間隔至少是 threshold,并且小于 threshold 間隔的調用會重新開始計時( 兩次調用的時間間隔);
// 解決 onresize 多次調用
復制代碼 代碼如下:

window.onresize = debounce( function(){
alert( 'hello world');
}, 100, true)

// 在自動補齊中為了減少請求服務器次數也會用到 debounce, 只有連續敲鍵間隔大于某個值才會發送 ajax
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青草伊人网 | 亚洲人成中文字幕在线观看 | 久久污 | 亚洲射逼 | 成人毛片一区 | 嗯啊羞羞视频 | av免费在线观看av | 国产精品久久久不卡 | 精品国产一区二区三区在线观看 | 自拍亚洲伦理 | 亚洲性视频 | 一区国产在线观看 | www.777含羞草| 国产免费观看av | 久草在线视频免费播放 | 久草成人在线 | 叉逼视频 | 欧美18一19sex性护士农村 | 中文字幕国产一区 | 一区二区三区手机在线观看 | 成年人黄视频 | 国产亚洲欧美一区久久久在 | 亚洲无毛av | 久久久久亚洲视频 | 黄色特级大片 | 久久精品亚洲一区二区三区观看模式 | 高清成人在线 | 国产1区2 | 中文字幕一区在线观看视频 | 成人啪啪色婷婷久 | 精品成人久久久 | 五月天影院,久久综合, | 国产欧美日韩在线不卡第一页 | 手机免费看一级片 | 精品久久久久久久久久久久包黑料 | 国产自在线 | 国产人成精品一区二区三 | 女人a级毛片 | 老司机免费福利午夜入口ae58 | 久久精品一二三区 | 国产一区视频免费观看 |