如何通过JavaScript检测iPhone何时进入横向模式?有这方面的活动吗?
我正在写一个针对iPhone的网站。当iPhone的方向改变时(即当用户将手机切换到横向和/或纵向模式时),我想在如何通过JavaScript检测iPhone何时进入横向模式?有这方面的活动吗?,javascript,iphone,safari,mobile-safari,ios,Javascript,Iphone,Safari,Mobile Safari,Ios,我正在写一个针对iPhone的网站。当iPhone的方向改变时(即当用户将手机切换到横向和/或纵向模式时),我想在元素上设置一个类 我可以通过JavaScript检测到这种变化吗?是否有此事件?是的,通过onorientationchange事件和window.orientation属性 您可以检查文档正文宽度。如果它突然变小或变大,你知道发生了什么。你可以用间隔来测量它 window.setInterval(function() { // check body with here
元素上设置一个类
我可以通过JavaScript检测到这种变化吗?是否有此事件?是的,通过
onorientationchange
事件和window.orientation
属性
window.setInterval(function() {
// check body with here and compare with global variable that holds the last measurement
// you may set a boolean isLandscape = true if the body with became bigger.
}, 50);
这也是一个优雅的解决方案。仅供参考,苹果Safari参考库的登录要求已被删除。@Pullets Forever-啊,太好了,谢谢。相应地进行了更新。不完全确定这是否有效:
document.body.clientWidth
在纵向和横向中似乎返回相同的值(至少在我正在处理的页面上是如此)。不过,您可能还可以检查其他属性。您必须使用诸如getComputedStyle之类的工具,并询问body标记的计算宽度。如果在safari中不起作用,请尝试currentStyle。还要确保body标签的宽度为100%。是的,这可以工作。这只是因为Mobile Safari的尺寸概念似乎有点抽象,因为它可以通过iPhone的屏幕进行缩放。即使有更多的物理像素可用,当它变为横向时,您似乎实际上并没有获得更多的像素宽度(就布局而言)。不过,我还没有检查各种属性返回的内容。