Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过JavaScript检测iPhone何时进入横向模式?有这方面的活动吗?_Javascript_Iphone_Safari_Mobile Safari_Ios - Fatal编程技术网

如何通过JavaScript检测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

我正在写一个针对iPhone的网站。当iPhone的方向改变时(即当用户将手机切换到横向和/或纵向模式时),我想在
元素上设置一个类


我可以通过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的屏幕进行缩放。即使有更多的物理像素可用,当它变为横向时,您似乎实际上并没有获得更多的像素宽度(就布局而言)。不过,我还没有检查各种属性返回的内容。