2017-06-11 26 views
10

iPhoneデバイス(iPhone 7、iOS 10など)でもこの問題が発生しています.JavaScriptではorientationchangeイベントをインターセプトすると内部ハンドラ、screen.width、screen.heightは(回転前と同じ)ままです。screen.width/screen.heightが画面回転後に更新されない

これは、ビューポートの設定から依存してもよいので、これは私のビューポートが.htmlのファイルで宣言されている方法です。

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1, maximum-scale=1, user-scalable=no" /> 

すべてはChromeのシミュレートされたビジュアライゼーションで正常に動作します。

ご協力いただきありがとうございます。

+0

iPhone、Safari、またはChromeのどのブラウザですか? – George

+0

Safariを使用していますが、Chromeでテストしていません。 –

+0

'jquery'を使用できますか? –

答えて

10

私が知っている限り、画面の幅/高さは、回転後にデバイスで変更されません。 + 90/-90

  • window.innerHeight /はinnerWidthから0からこの値の変更:デバイスが回転している場合は、これらのプロパティ

    1. window.orientationを読むことができる確認するには、この値が入れ替わります
    2. document.documentElement.clientHeight/clientWidth:この値は、

    は残念ながら、この動作はCではありません入れ替わりますすべてのAndroid/iOS/Windowデバイスに一貫しています。私はthisの形がかなり説明されていると思います。

  • +0

    iPadを逆さまにして「window.orientation」を** 180 **にすることができます。 –

    4

    iOSは画面のサイズを肖像画のように戻すために使用されました。 彼らはiOS 8(ネイティブクラス)でそれを変更しましたが、Safariのためにそれをするのを忘れていたかもしれません。

    あなたが window.innerWidthwindow.innerHeight

    を使用することができる方向に基づいて、実際のサイズが必要な場合、私は同じ値を取得するビューポートのメタタグの有無にかかわらず

    のでそれはクロームシミュレート可視化で正常に動作しますシミュレートされた視覚化の画面サイズを返す必要がありますが、デバイスに基づいて実行する必要があるOSをシミュレートしないため、実際のデバイスと同じ値を取得することはありません(この場合は実際のデバイスが良好な値を返さない)

    0

    jQuery mobileには方向変更イベントを処理するイベントがあり、方向を手動で変更するには$(window).orientationchange();というイベントがあります。

    0

    CSSは方向変更を検出できません。

    JavaScriptを使用して向きを変更してください。

    これは方向が変更されたときbodywidthを変更するevent Handlerwindowに追加されます

    window.addEventListener("orientationchange", function() { 
        document.body.style.width = window.innerWidth; 
    }); 
    

    としての機能を追加します。

    orientationchange

    関連する問題