首頁 web前端 js教程 window.onresize 多次觸發的解決方法_javascript技巧

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

May 16, 2016 pm 05:16 PM
window

之前做一個擴展,需要在改變視窗大小的時候保證頁面顯示正常,於是用了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)
time (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
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在JavaScript中替換字符串字符 在JavaScript中替換字符串字符 Mar 11, 2025 am 12:07 AM

在JavaScript中替換字符串字符

jQuery檢查日期是否有效 jQuery檢查日期是否有效 Mar 01, 2025 am 08:51 AM

jQuery檢查日期是否有效

jQuery獲取元素填充/保證金 jQuery獲取元素填充/保證金 Mar 01, 2025 am 08:53 AM

jQuery獲取元素填充/保證金

前5個日期操縱JS插件 前5個日期操縱JS插件 Feb 28, 2025 am 12:34 AM

前5個日期操縱JS插件

10個jQuery手風琴選項卡 10個jQuery手風琴選項卡 Mar 01, 2025 am 01:34 AM

10個jQuery手風琴選項卡

10值得檢查jQuery插件 10值得檢查jQuery插件 Mar 01, 2025 am 01:29 AM

10值得檢查jQuery插件

jQuery添加捲軸到Div jQuery添加捲軸到Div Mar 01, 2025 am 01:30 AM

jQuery添加捲軸到Div

HTTP與節點和HTTP-Console調試 HTTP與節點和HTTP-Console調試 Mar 01, 2025 am 01:37 AM

HTTP與節點和HTTP-Console調試

See all articles