ブラウザでの画面の向きの検出
iPhone の Safari では、画面向きの変化は、onorientationchange イベントを通じて検出できます。ただし、次のような疑問が生じます: Android スマートフォンでも同様の方向検出機能を提供できますか?
JavaScript と Android Phone Rotation
Android デバイス間で方向検出の動作は大きく異なります。サイズ変更イベントと方向変更イベントは、異なるシーケンスで一貫性のない頻度で起動される場合があります。さらに、screen.width や window.orientation などの値は、常に期待どおりに更新されるわけではありません。
回転を検出するための信頼できるアプローチ
信頼性を確保するには、以下をサブスクライブすることをお勧めします。サイズ変更イベントと方向変更イベントの両方。さらに、ポーリング メカニズムを実装して、欠落したイベントをキャプチャすることもできます。
<code class="javascript">var previousOrientation = window.orientation; var checkOrientation = function(){ if(window.orientation !== previousOrientation){ previousOrientation = window.orientation; // orientation changed, take appropriate actions } }; window.addEventListener("resize", checkOrientation, false); window.addEventListener("orientationchange", checkOrientation, false); // (optional) Android may fail to fire events on 180 degree rotations setInterval(checkOrientation, 2000);</code>
デバイス固有の結果
さまざまなデバイスでのテストにより、不一致が明らかになりました。 iOS デバイスは一貫した動作を示しますが、Android デバイスはばらつきを示します。以下の表は、観察された結果をまとめたものです:
Device | Events Fired | Orientation | innerWidth | screen.width |
---|---|---|---|---|
iPad 2 (landscape to portrait) | resize, orientationchange | 0, 90 | 1024, 768 | 768, 768 |
iPad 2 (portrait to landscape) | resize, orientationchange | 90, 0 | 768, 1024 | 768, 768 |
iPhone 4 (landscape to portrait) | resize, orientationchange | 0, 90 | 480, 320 | 320, 320 |
iPhone 4 (portrait to landscape) | resize, orientationchange | 90, 0 | 320, 480 | 320, 320 |
Droid phone (portrait to landscape) | orientationchange, resize | 90, 90 | 320, 569 | 320, 569 |
Droid phone (landscape to portrait) | orientationchange, resize | 0, 0 | 569, 320 | 569, 320 |
Samsung Galaxy Tablet (landscape to portrait) | orientationchange, orientationchange, orientationchange, resize, orientationchange | 0, 90, 90, 90, 90 | 400, 400, 400, 683, 683 | |
Samsung Galaxy Tablet (portrait to landscape) | orientationchange, orientationchange, orientationchange, resize, orientationchange | 90, 90, 0, 90, 90 | 683, 683, 683, 400, 400 |
したがって、ブラウザーの JavaScript を使用して Android スマートフォンの回転を検出することは可能ですが、動作はデバイスによって異なり、信頼性を確保するには堅牢なアプローチが必要です。
以上がJavaScript はブラウザーでの Android スマートフォンの回転を確実に検出できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。