在Apple开发的Safari浏览器中,可以通过观察orientationChange事件和评估窗口来监视屏幕方向的变化。方向。然而,这样的功能可以在 Android 设备上运行的浏览器中实现吗?
对此的反应是细微差别的。标准网页上的 JavaScript 执行确实可以检测 Android 设备中的屏幕旋转。但是,不同设备和浏览器的行为有所不同。
挑战和推荐方法
主要挑战在于 Android 设备之间的事件触发行为不一致。 resize 和orientationChange 事件可能会以不同的频率异步触发。为了增加这种复杂性,像 screen.width 和 window.orientation 这样的值可能并不总是提供可预测的结果。因此,不建议仅依赖 screen.width,因为它在 iOS 旋转期间保持不变。
最可靠的方法是同时侦听 resize 和orientationChange 事件。使用 setInterval 函数通过定期轮询来补充这一点可以增强可靠性,确保有效的方向值。
<code class="javascript">var previousOrientation = window.orientation; var checkOrientation = function(){ if(window.orientation !== previousOrientation){ previousOrientation = window.orientation; // Perform operations in response to orientation change } }; window.addEventListener("resize", checkOrientation, false); window.addEventListener("orientationchange", checkOrientation, false); // Android occasionally fails to trigger events for 180-degree rotations setInterval(checkOrientation, 2000);</code>
设备特定结果
以下是观察到的行为的摘要各种经过测试的设备:
Device | Event Sequence | orientation | innerWidth | screen.width |
---|---|---|---|---|
iPad 2 (Landscape) | resize, orientationchange | 90 | 1024 | 768 |
iPad 2 (Portrait) | resize, orientationchange | 0 | 768 | 768 |
iPhone 4 (Landscape) | resize, orientationchange | 90 | 480 | 320 |
iPhone 4 (Portrait) | resize, orientationchange | 0 | 320 | 320 |
Droid Phone (Landscape) | orientationchange, resize | 90 | 320 | 320 |
Droid Phone (Portrait) | orientationchange, resize | 0 | 569 | 569 |
Samsung Galaxy Tablet (Landscape) | orientationchange, orientationchange, orientationchange, resize, orientationchange | 90 | 400 | 400 |
Samsung Galaxy Tablet (Portrait) | orientationchange, orientationchange, orientationchange, resize, orientationchange | 0 | 683 | 683 |
以上是JavaScript 可以检测 Android 手机在浏览器中的旋转吗?的详细内容。更多信息请关注PHP中文网其他相关文章!