Mobile Safari 不会触发“orientationchange”——如何调试?

Posted

技术标签:

【中文标题】Mobile Safari 不会触发“orientationchange”——如何调试?【英文标题】:Mobile Safari doesn't trigger "orientationchange"—how to debug? 【发布时间】:2016-09-12 19:04:45 【问题描述】:

我有一个网站 (http://7db.9ed.myftpupload.com/),我想展示针对方向量身定制的内容。在横向模式下,它应该显示一个宽的幻灯片,在纵向它应该切换到一个薄的幻灯片。

我正在尝试使用 Apple 在 Safari Web 内容指南中指定的“orientationchange”事件。

jQuery( document ).ready( function() window.addEventListener("orientationchange", function() console.log("the orientation of the device is now " + screen.orientation.angle); placeSlideshow(); , false); );

这在 Chrome 的 ios 模拟器中运行顺利。但是,在 OSX 硬件模拟器和实时 iOS 设备上,方向更改都不会发生任何事情。这不是placeSlideshow 函数——Safari 根本不会触发方向更改。

无法解决这个问题——我从哪里开始?

【问题讨论】:

【参考方案1】:

原来问题实际上是我添加的 console.log 调用。Safari 无法识别属性 screen.orientation.angle, 并且由于我不知道的原因,这个调用成功地破坏了整个回调。

我删除了日志调用,一切正常。

【讨论】:

至少在 iOS 12.4.4 上,在 iPhone 6 上,没有定义 screen.orientation 对象。它是在 Windows 上的 Chrome 开发工具中定义的,当您单击更改方向按钮时,而不是在实际的 iPhone 上。这就是您的控制台日志调用失败的原因。

以上是关于Mobile Safari 不会触发“orientationchange”——如何调试?的主要内容,如果未能解决你的问题,请参考以下文章

触摸事件仅在iPad iOS 11.4上的Mobile Safari中滚动时触发“一次”

为啥在 iOS Safari Mobile (iPhone / iPad) 中没有触发模糊事件?

使用 Mobile Safari“表单助手”在选择元素上未触发更改事件

为啥我的 Mobile Safari 缓存不会清除?

[手机][Safari]Safari手机后退按钮事件

mobile-safari javascript:多个 setTimeouts 或 setIntervals