2014-07-23 96 views
1

我有一個事件偵聽器,看起來像:調整窗口大小之前和之後的innerWidth/innerHeight?

window.addEventListener("resize", function(data){ 
    console.log(data); 
    // Do something 
}); 

反正是有得到調整之前在上面的回調函數innerWidth/innerHeight?我通過上面的代碼中的data對象,並沒有發現任何東西。

+0

'之前'是關鍵詞。請參閱,不同瀏覽器的行爲與'resize'不同。甚至操作系統設置[可能會影響](http://www.quirksmode.org/dom/events/resize.html)的行爲。我想最好的辦法是將先前的值緩存在你自己的腳本中。 – raina77ow

+0

不是我所知道的,但是當頁面加載並將其存儲在一個變量中時,您可以獲取這些信息。 –

回答

0

每次瀏覽器調整大小事件發生時,我最終都會保存舊的寬度值。代碼如下:

var initialWidth = window.innerWidth; 

window.addEventListener("resize", function(){ 
    // Do something with 'initialWidth' 
    initialWidth = window.innerWidth; 
}); 

在上面,我保存頁面加載時的瀏覽器寬度。然後,每次瀏覽器調整大小時,我都會在回調函數結束時保存新的瀏覽器寬度。

0

你不能,你必須存儲以前的高度/寬度在一些變量。只需將它放在頁面加載的變量中,然後就可以用這種方法訪問它。沒有什麼比bofore調整大。 read this

0

只是添加了一些跟蹤最後resize事件值:

var windowSize = (function() { 
    var lastWidth = 0, lastHeight = 0; 

    window.addEventListener('resize', function (data) { 
    // do something with last values 
    ... 
    console.log(lastWidth); 
    console.log(lastHeight); 
    ... 

    lastWidth = window.innerWidth; 
    lastHeight = window.innerHeight; 
    }); 

    return { width: lastWidth, height: lastHeight }; 
})(); 

現在,您可以使用windowSize對象封外面尋找當前窗口的大小是什麼,以及在內部內關閉你可以在更新lastWidthlastHeight之前根據窗口以前的大小採取行動。

希望這會有所幫助!