2017-04-18 108 views
2

在我現有的應用程序中,我正在處理兩個事件,一個是針對移動的方向更改,另一個是桌面的onresize更改。不幸的是這兩件事情都很火避免onresize和orientationchange同時觸發

我試圖只在設備方向或瀏覽器調整大小時發生任何更改時才觸發一個函數。我想要下面給出的例子。或者建議我無論我在這裏失蹤。

(function() { 
    var getEvent = function() { 
    event = window.ondeviceorientation || window.onresize; 
    return event; 
    }; 
    document.addEventListener(getEvent, function() { 
    console.log("Size changed"); 
    }, false); 

})(); 

JSBIN

回答

2

GetEvent是一個功能...

function() { 
var getEvent = function() { 
    event = window.ondeviceorientation ? "deviceorientation" : "resize"; 
    return event; 
}; 
document.addEventListener(getEvent(), function() { //<--- 
    console.log("Size changed"); 
}, false); 

})(); 

使用addEventListener需要一個字符串,所以你需要創建一個字符串。 Shortified:

document.addEventListener(window.ondeviceorientation ? "deviceorientation" : "resize", function() { 
    console.log("Size changed"); 
}, false); 

這使你的代碼的工作,但它上deviceorientation 上調整任一火災。所以你可能想要這個:

function callable(){}; 
document.addEventListener("deviceorientation",callable); 
document.addEventListener("resize",callable);