这也可以被认为是一个肮脏的解决方案,但过去我曾使用 asetTimeout
来处理这个问题,而且它似乎总是可靠的。
window.onorientationchange = function() {
canvasResize();
}
function canvasResize() {
window.setTimeout(function () {
//Your code here based on new size
}, 100);
}
或者,如果您正在寻找一个不太脏的解决方案,您应该能够自己跟踪视口宽度,然后等到更改后进行更新。在某处添加到您的脚本中:
var viewportWidth = window.innerWidth;
并改变canvasResize
:
function canvasResize() {
if(window.innerWidth != viewportWidth) {//Dimensions have changed for sure
viewportWidth = window.innerWidth; //Update viewportWidth for future use
//Your code here based on new size
}
else {
//Delay and try again
window.setTimeout(function () {
canvasResize();
}, 100);
}
}
两者都非常快速和肮脏,如果有更优雅的解决方案我会很感兴趣,但我还没有找到一个。