为啥 Safari Mobile 在 iOS 8 上处理许多输入字段时遇到问题

Posted

技术标签:

【中文标题】为啥 Safari Mobile 在 iOS 8 上处理许多输入字段时遇到问题【英文标题】:Why does Safari Mobile have trouble handling many input fields on iOS 8为什么 Safari Mobile 在 iOS 8 上处理许多输入字段时遇到问题 【发布时间】:2014-10-01 19:57:11 【问题描述】:

ios 8.0/8.0.1/8.0.2 有这个问题。

我有一个包含 70 个简单文本输入的页面:

<input class=""  type="text">

在 iOS 7 上,该页面没有问题。但在 iOS 8 上,选择并输入一个字段会导致 iPad 变得缓慢和滞后。

你可以在这个jsFiddle看到一个问题的例子

有人知道这个问题的解决方法吗???

【问题讨论】:

桌面版 Safari 11.0.3 也会出现这种情况。 【参考方案1】:

似乎问题与作为文档或表单一部分的文本输入的数量有关。

我通过在一小组文本输入周围放置

标签来“修复”了这个问题。
<form>
  <input type="text">
  <input type="text">
  <input type="text">
</form>

<form>
  <input type="text">
  <input type="text">
  <input type="text">
</form>

等等

在某些情况下,我在

元素中有带有单独文本字段的大型表格。您不能在表单中包含 或 元素,而必须包含整个 或单个
元素的内容。在这些情况下,我必须在每个文本输入周围放置一个 元素。
<table>
  <tr>
    <td>
      <form>
        <input type="text">
      </form>
    </td>
    <td>
      <form>
        <input type="text">
      </form>
    </td>
  </tr>
  etc....
</table>

【讨论】:

你知道什么是“设计导航器”吗?我可以吻你。这就像一个魅力。 留言板错误 ;-) 你给我们的是一个 Kludge,或者换句话说,一个大黑客!凌乱但确实解决了问题。这就是为什么我赞成并接受作为答案,以防它帮助他人。 大家好,我在IOS8上运行输入时遇到了这样一个奇怪的问题,请参阅[***.com/questions/27053549/…,希望您能回答问题,提前谢谢! 哇。 2019 年仍在发行,你救了我的命。
【参考方案2】:

更新: 这似乎在 iOS 8.1.1 测试版中得到解决。它似乎没有得到修复,基于 cmets。 :(


它也在 8.1 测试版中。你应该file a radar。

某些东西会导致整个网页重新加载或 Safari 挂起。例如,访问http://getemoji.com/ 并开始在搜索框中输入内容。如果不重新加载页面,您无法在 iOS 8.x 设备上执行此操作。

值得注意的是,Chrome 和 Mercury 运行良好,因此您可以建议您的用户切换到基于 UIWebView 的第三方浏览器。 (我没有测试过WKWebView。)

【讨论】:

是的,我还注意到它适用于 Chrome 和其他一些第三方浏览器。不幸的是,强制用户下载另一个浏览器并不是真正的最佳解决方案。 我遇到了同样的问题,将我的设备升级到 8.1.1 看看是否已修复。不是。也许有一点点改进,但​​在输入繁重的页面上仍然令人难以置信的笨拙和缓慢。还不知道该怎么做,但我建议其他有类似问题的人不要对 8.1.1 寄予太大希望。 8.1.1 不能解决问题。目前,如果用户正在使用 Safari 并且拥有 8+,我会将他们带到一个页面,通知他们 IOS 8 目前不支持 Safari。如果他们想使用该服务,他们必须安装 Google Chrome(或使用台式电脑)。在 Apple 推出修复程序之前,这似乎是我能做的最好的事情。 一年后仍然遇到这个问题,真的不想将所有输入包装在
中来解决。
【参考方案3】:

我已经为此苦苦挣扎了好几个小时,直到我在此页面上找到了解决方案。谢谢!这是我对 Design Navigator 建议的解决方案的实现:

$(document).ready(function()    
    var isSafari = navigator.vendor && navigator.vendor.indexOf('Apple') > -1 && navigator.userAgent && !navigator.userAgent.match('CriOS');
    if (isSafari)
      $('#container input[type="text"]').wrap('<form />');
    

【讨论】:

以上是关于为啥 Safari Mobile 在 iOS 8 上处理许多输入字段时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Mobile Safari 缓存不会清除?

为啥 Safari Mobile 中无法播放网络音频 api 振荡器?

iPhone 6+ Mobile safari iOS 8 Landscape with tabs open and Bootstrap navbar-fixed-top 在打开时不会关闭

iOS 7 Safari 干扰 jQuery Mobile 页脚

Dojo Mobile ComboBox 下拉菜单在 iOS8/Safari 中错位

Websql 排队执行 - iOS6 Mobile Safari