我一路試過,但在頁面上向上或向下滑動時,window.onresize仍然會觸發。如何在滾動時停止window.onresize事件?我只需要射擊一次?
首先,我嘗試了基本的命令行:
window.onresize = function (event) {
setTimeout(Orientation,500);
}
function Orientation() {
if (window.innerHeight > window.innerWidth) {
alert("Portrait");
}
else {
alert("Landscape");
}
}
當警報顯示出來,我點擊確定。但是,當我再次刷卡向上或向下的頁面上,警報顯示出來,送花兒給人這樣的...
我會嘗試jQuery的大衛·沃爾什:
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);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
var myEfficientFn = debounce(function() {
if (window.innerHeight > window.innerWidth) {
alert("Portrait");
}
else {
alert("Landscape");
}
}, 250);
window.addEventListener('resize', myEfficientFn);
的結果是一樣的!
您可以通過手機或平板電腦試一下:http://hangaumy.com/test.html
是否有此事件的任何其他方式?非常感謝 !
WOW,令人驚歎,它的完成!感謝您的美麗幫助!但Window.resize事件現在停止,我希望它運行一次Window.resize? –
我不認爲你意識到我正在做的這一點。停止你的功能而不是事件。取出超時並將其放入函數中。不要使用「if else」做出兩個單獨的條件。並非一切都是「如果其他」 – Rick