我有一个非响应式页面,我需要通过iframe包含。 为了显示整个iframe,我使用javascript动态设置视口宽度和比例。 当我准备关闭iframe时,我重置了视口宽度并缩放到原始值。
通常情况下这很好。 但是,如果打开屏幕键盘(例如在文本输入焦点上),iOS拒绝遵守任何进一步的缩放。它将尊重视口大小,而不是初始规模。 有趣的是,如果你旋转设备,它最终将遵循初始规模。
我认为这可能只是一个iOS错误。任何建议都将不胜感激。
答案 0 :(得分: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