1

我正在构建一个使用 jQuery 和hammer.js 进行触摸控制的移动网络应用程序。hammer.js 有一个名为“prevent_default”的功能,它可以关闭 Safari 的滚动/缩放/prettymucheverything。我有一个页面,其中包含一个使用 < input > 用于文本字段的表单,以及一个在您点击表单时调用 .focus() 的 javascript 侦听器。

这一切都运作良好,直到某一点。页面固定在适当的位置,看起来非常漂亮,当您单击表单字段时,它会放大并出现 iOS 键盘。问题是当用户完成输入文本时,没有办法缩小。浏览器从 .focus() 放大到浏览器栏消失了,您必须关闭浏览器选项卡并重新输入 URL 而不是刷新。

我正在寻找一种方法来强制浏览器缩小到初始视图。我已经在整个互联网上寻找一些解决方案,但还没有找到任何东西。

我在标题中有视口元标记以从一开始就禁用缩放,但在解决此问题时没有用

4

1 回答 1

0

一个 hacky 解决方案是在更改视口属性后聚焦和模糊输入字段。

function refreshViewportZoom(){
  var viewport = document.querySelector("meta[name=viewport]");
  viewport.setAttribute('content', 'initial-scale=0.5, maximum-scale=0.5, scale=0.5, user-zoom=0.5, zoom=0.5');
  document.getElementById('myInputField').focus();
  setTimeout(blurLater,2000);
}

function blurLater(){
  document.getElementById('myInputField').blur();
}

需要作为blurLater一个函数,因为 Safari 似乎会向前看,否则会忽略它。

于 2012-10-24T23:52:09.527 回答