0

iframe 経由で含める必要がある応答しないページがあります。iframe 全体を表示するために、javascript を使用してビューポートの幅とスケールを動的に設定します。iframe を閉じる準備ができたら、ビューポートの幅とスケールを元の値にリセットします。

通常、これで問題なく動作します。ただし、オンスクリーン キーボードが開いている場合 (テキスト入力フォーカスなど)、iOS はそれ以上のスケーリングを拒否します。初期スケールではなく、ビューポートのサイズ変更を尊重します。興味深いことに、デバイスを回転させると、最終的に初期スケールが適用されます。

これは単にiOSのバグである可能性があると思います。アドバイスをいただければ幸いです。

4

1 に答える 1

0

したがって、トリックは単純にキーボードを再度トリガーすることのようです。キーボードが開くと、設定したビューポート スケールがすぐに適用されます。

キーボードをポップアップさせるのは、言うほど簡単ではありません。基本的に、実際のクリック イベントまたはマウスアップ イベントを処理し、クリック ハンドラー ( http://jsfiddle.net/DLV2F/87/ ) から直接テキスト入力フォーカスをトリガーする必要があります。

<input>
<p id="click">Click handler</p>
<p id="click-timeout">Click handler setting timeout</p>
<p id="mousedown">Mousedown handler</p>
<p id="mousedown-timeout">Mousedown handler setting timeout</p>
<p id="mouseup">Mouseup handler</p>
<p id="mouseup-timeout">Mouseup handler setting timeout</p>
<p id="extern-click-trigger">Clicking here will trigger click on the first 'Click Handler'</p>
<p id="tap">Virtual 'TAP' handler</p>
<p id="tap-triggering-click">Virtual 'TAP' handler triggering click on the first 'Click handler'</p>

<script>
function focus() {
    $('input').focus();
}
$(focus);
$(function() {
    $(document.body).load(focus);
    $('#click').click(focus);
    $('#click-timeout').click(function() {
        setTimeout(focus);
    });
    $('#mousedown').mousedown(focus);
    $('#mousedown-timeout').mousedown(function() {
        setTimeout(focus);
    });
    $('#mouseup').mouseup(focus);
    $('#mouseup-timeout').mouseup(function() {
        setTimeout(focus);
    });
    $('#extern-click-trigger').click(function() {
        $('#click').click();
    });
    $('#tap').bind('tapone', function() {
        focus();
    });
    $('#tap-triggering-click').bind('tapone', function() {
        $('#click').click();
    });

});
</script
于 2013-08-06T21:50:46.097 に答える