我在嘗試運行一個函數時只遇到了一次onresize事件觸發時,我已經看過這個問題DOM onresize event但我沒有使用jQuery並且無法使該函數正常工作沒有。有什麼建議麼?JavaScript onresize事件多次觸發
回答
在調整大小操作期間,調整大小事件對於每個幀都會調用一次。如果您想在調整大小完成時調用它,只需使用回調函數設置定時器即可。
var timeOut = null;
window.onresize = function(){
if (timeOut != null)
clearTimeout(timeOut);
timeOut = setTimeout(function(){
// YOUR RESIZE CODE HERE
}, 500);
};
當然,如果用戶持續半秒鐘的窗口大小,這種方法將不會如預期般運作。這是一個很好的答案,但不是萬無一失的。 –
我不這麼認爲。這種行爲甚至可能是他正在尋找的。 –
@Kinkink:無法檢測調整大小操作的結束。 – Bergi
您可以使用debounce
實施from underscore:
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
if (immediate && !timeout) func.apply(context, args);
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
}
window.onresize = debounce(function() {
// Your code here
}, 500);
或者使用library from the linked question。沒有jQuery,它是Cowboy.debounce(...)
。
- 1. Javascript + onresize事件
- 2. Angular2:onResize方法多次觸發
- 3. 多次觸發移動JavaScript事件
- 4. Javascript點擊事件觸發多次?
- 5. Modernizr.mq事件觸發多次
- 6. JavaScript事件觸發兩次
- 7. jQuery觸發器事件觸發多次
- 8. 觸發事件黑莓觸發多次
- 9. ViewModel事件多次觸發
- 10. 事件觸發多次
- 11. Nodejs事件觸發多次
- 12. jQuery事件多次觸發
- 13. EditingControlShowing事件觸發多次
- 14. 在UpdatePanel中多次觸發pageLoad事件
- 15. Javascript onResize觸發器螺絲動畫
- 16. 選擇更改事件觸發多次
- 17. 更改事件觸發多次
- 18. Backbone綁定事件多次觸發
- 19. 點擊事件觸發多次
- 20. jQuery - 單擊事件多次觸發
- 21. JavaScript事件點擊觸發兩次
- 22. 不止一次Javascript觸發事件
- 23. Javascript onkeydown事件只觸發一次?
- 24. 訪問窗口時,onresize事件不會觸發寬度
- 25. F#事件正在多次觸發。 。 。?
- 26. 多次觸發JQuery onclick事件
- 27. jQuery .append Onchange事件觸發多次
- 28. CanJS點擊事件觸發多次
- 29. ImageResizer AuthorizeImage事件觸發多次
- 30. 骨幹事件被多次觸發
發表一些代碼 - 從我的頭頂開始,使用布爾值? –
鏈接的答案不需要jQuery的工作,純JavaScript的。再讀一次 – Alexander
$(window).resize($。debounce(1000,function(){ //在一秒鐘的平靜後只處理一次總的調整大小 ... })); 我已經嘗試使用這個沒有jQuery,但它不工作,我用這個Firefox內部擴展 – ama2