我在iOS 8中重现了同样的问题。
这是我的解决方案。
我听过resize,scroll,directionChangeEvent事件,以确保当用户触发屏幕尺寸更改时,会调用reset height功能。
我写了一个反跳以防止多次呼叫。
而且它处于关闭状态,没有依赖项(没有jQuery)。
(function(){
var setViewportHeight = (function(){
function debounced(){
document.documentElement.style.height = window.innerHeight + "px";
if (document.body.scrollTop !== 0) {
window.scrollTo(0, 0);
}
}
var cancelable = null;
return function(){
cancelable && clearTimeout(cancelable);
cancelable = setTimeout(debounced, 100);
};
})();
//ipad safari
if(/iPad/.test(navigator.platform) && /Safari/i.test(navigator.userAgent)){
window.addEventListener("resize", setViewportHeight, false);
window.addEventListener("scroll", setViewportHeight, false);
window.addEventListener("orientationchange", setViewportHeight, false);
setViewportHeight();
}
})();