2013-08-06 22 views
0

我有一個無響應的頁面,我需要包括通過iframe。 爲了顯示整個iframe,我使用javascript動態設置視口寬度和比例。 當我準備好關閉iframe時,我重置視口寬度並縮放到原始值。ios viewport的初始規模不符合屏幕鍵盤

通常這工作正常。 但是,如果屏幕鍵盤被打開(例如在文本輸入焦點上),iOS拒絕承認任何進一步縮放。它會尊重視口調整大小,而不是初始大小。有趣的是,如果您旋轉設備,它將最終兌現初始比例。

我認爲這可能只是一個iOS錯誤。任何建議將不勝感激。

回答

0

所以它似乎只是再次觸發鍵盤的訣竅。一旦鍵盤打開您設置的視口比例將立即被兌現。

讓鍵盤彈出是比說得容易。基本上你必須處理一個真正的點擊事件或mouseup事件,然後直接從點擊處理程序(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