DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 淺談JavaScript函數節流
淺談JavaScript函數節流
編輯:關於JavaScript     

浏覽器中某些計算和處理要比其他的昂貴的多。例如,DOM操作比起非DOM交互需要更多的內存和CPU時間。連續嘗試進行過多的DOM相關操作可能會導致 浏覽器掛起,有時候甚至會崩潰。尤其在IE中使用onresize事件處理程序的時候容易發生,當調整浏覽器大小的時候,該事件連續觸發。在 onresize事件處理程序內部如果嘗試進行DOM操作,其高頻率的更改可能會讓浏覽器崩潰。
     函數節流背後的基本思想是,某些代碼不可以在沒有間斷的情況連續重復執行。第一次調用函數,創建一個定時器,在指定的時間間隔之後運行代碼。當第二次調用 該函數時,它會清除前一次的定時器並設置另一個。如果前一個定時器已經執行過了,這個操作就沒有任何意義。然而,如果前一個定時器尚未執行,其實就是將其 替換為一個新的定時器。目的是只有在執行函數的請求停止了一段時間之後才執行。
      
代碼如下:
 function throttle ( method , context ){
                clearTimeout ( method.tId );
                method.tId = setTimeout ( function () {
                     method.call ( context );
                 } , 100);
          }

應用舉例:
     假設有一個<div/>元素需要保持它的高度始終等同於寬度,可作如下編碼:
       
代碼如下:
 function resizeDiv(){
                var div = document.getElementById("mydiv");
                div.style.height = div.offsetWidth + "px";
            }
           window.onresize = function(){
                throttle(resizeDiv);
            }

    這裡,調整大小的功能被放入了一個叫做resizeDiv的單獨函數中,然後onresize事件處理程序調用throttle()並傳入 resizeDiv函數,而不是直接調用resizeDiv()。多數情況下,用戶是感覺不到變化的,雖然給浏覽器節省的計算可能非常大。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved