Javascript JS方向更改侦听器在iOS上不启动,但在Android上启动
我有以下代码:Javascript JS方向更改侦听器在iOS上不启动,但在Android上启动,javascript,ios,iphone,orientation,screen-orientation,Javascript,Ios,Iphone,Orientation,Screen Orientation,我有以下代码: window.addEventListener("orientationchange", orientation); 但它不是在运行iOS 10.3的iPhone SE上启动的orientation(),而是在运行安卓5.1的Moto G上启动的 我需要它来更新一些东西,这取决于屏幕的宽度。我使用window.innerWidth和screen.width进行设置,如果未定义(浏览器差异) 我的orientation()如下所示: cpr = Math.floor(window
window.addEventListener("orientationchange", orientation);
但它不是在运行iOS 10.3的iPhone SE上启动的orientation()
,而是在运行安卓5.1的Moto G上启动的
我需要它来更新一些东西,这取决于屏幕的宽度。我使用window.innerWidth
和screen.width
进行设置,如果未定义(浏览器差异)
我的orientation()
如下所示:
cpr = Math.floor(window.innerWidth/100) - 3;
if (navigator.userAgent.match(/iPhone|iPad|iPod/i) || navigator.userAgent.match(/Android/i)) cpr = Math.min(Math.floor(screen.width/100) - 1, 8);
if (!cpr || cpr <= 0) cpr = 1;
id('times').innerHTML = "";
updateTimes();
cpr=Math.floor(window.innerWidth/100)-3;
如果(navigator.userAgent.match(/iPhone | iPad | iPod/i)| navigator.userAgent.match(/Android/i))cpr=Math.min(Math.floor(screen.width/100)-1,8;
如果(!cpr | | cpr我对resize事件有类似的问题。
我找到了原因
直到最近,Mobile Safari在调整视口大小和页面布局后才正确发布调整大小事件。但是,情况不再如此。相反,它是在页面完全布局之前发布的。onresize回调中任何依赖clientWidth、clientHeight、getBoundingClientRect等的JavaScript现在都已中断n
可能在页面完全布局之前也会触发orientationchange事件,因此window.innerWidth返回错误的值
编辑:
最近我发现document.documentElement.clientWidth
返回了正确的值。也许这可以帮助您。我理解您的意思。我以前看到过这个,但我认为这从未影响过我的代码。谢谢!