私は、iOS 7 のリリースで見られた動作の変化に関する問題を解決しようとしています。
Web サイトでサイズ変更イベントを処理するコードがいくつかあります。これが理想的に機能する方法は、ズーム (電話でのピンチ ズームなど) を実行している場合は実行されませんが、たとえばブラウザー ウィンドウのサイズを変更した場合は実行されます。
私たちが見つけたのは、iOS 7 デバイスでは、ピンチ ズームを行っているときに safari が JavaScript のサイズ変更イベントを頻繁に発生させることです。これは常に発生するわけではなく、ランドスケープ モードでのみ発生するようです。私たちの iOS6 デバイスはそうではありませんでしたし、手元にあるどの Android デバイスもそうではありませんでした。これらには 2 つの悪影響があります。
1) ページの「ジャンプ」が発生するようです。つまり、ページが突然、通常は左上隅に再配置されます。これは、サイズ変更イベント ハンドラがない場合でも発生することに注意してください。
私はそれが私たちのページレイアウトではないと思います. 小数ピクセルやパーセンテージの高さと幅などの動作を引き起こす可能性があるものを回避するように特に注意してきました。また、(META タグを使用して) ビューポートの幅を 700px 以下に設定することで、この動作を排除できます。さらに、前述のように、プロファイルにそのような問題は見られません。(他のビューポート設定を設定していないので、それは問題ではありません。また、「width=client-width」を設定しても役に立ちません。
2) サイズ変更ハンドラーでは、実際には window.innerWidth の期待値が得られないようです。つまり、ズームインすると、予想よりも大きな値が得られます。たとえば、私は通常、ズームしているかどうかを判断するために次のようなものを使用します。
abs(1 - document.documentElement.clientWidth / window.innerWidth) < 0.02
しかし、それはここではうまくいかないようです。
残念ながら、サイズ変更のロジックがページの再フォーマットを行うため、これを回避する必要があります。このページは基本的に、頻繁に表示される横向きのカスタム オンライン レポートです。ユーザーに電話をズームしたり回転させたりしないように言うことはできません;-)
誰かがこれらの問題に遭遇しましたか? もしそうなら、どのようにそれを回避しましたか?
余談ですが、最新の 7.0.3 サファリ アップデートで JavaScript アラートをクリアできないことがあります (つまり、アラートの [OK] ボタンが機能せず、サファリがハングします)。iOS 7.0.3 アップデートで修正される予定だったアラートに問題があったことは知っていますが、おそらく私が知らない他の問題があるでしょう。この状態になったら、デバイスを再起動する必要があります。