我正在使用JQM并使用:
进行方向更改$(window).bind('orientationchange', handleOrientationChange);
function handleOrientationChange() {
var viewportWidth = 0;
var viewportHeight = 0;
// calculate map height and width
if( typeof( window.innerWidth ) == 'number' ) {
viewportWidth = window.innerWidth;
viewportHeight = window.innerHeight;
} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
viewportWidth = document.documentElement.clientWidth;
viewportHeight = document.documentElement.clientHeight;
} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
viewportWidth = document.body.clientWidth;
viewportHeight = document.body.clientHeight;
}
在Android中,当调用handle函数时,我会在方向更改之前获取尺寸,而不是之后。在iPhone中,它可以正常工作。 我需要添加0.5 / 1秒的小延迟......
有人知道原因或有更好的解决方案吗?
非常感谢。
答案 0 :(得分:0)
我成功使用了setTimeout
这个想法。只需确保一次只设置一个超时:
var oc_timer;
$(window).bind('orientationchange', function () {
clearTimeout(oc_timer);
oc_timer = setTimeout(handleOrientationChange, 500);
});
我认为问题在于,orientationchange
事件在Android设备上触发得太快,并且在事件触发时尚未更新视口尺寸。我已经尝试绑定到resize
事件,但它也需要超时。