【问题标题】:Cannot type into textarea with fastclick on iOS 9无法在 iOS 9 上使用 fastclick 输入文本区域
【发布时间】:2016-01-28 11:29:15
【问题描述】:

过去几天我一直在寻找解决方案,但所有应该工作的东西(根据文档)都没有。

我正在使用fastclick 来消除打算在 iPad 上运行的 HTML5 应用程序的 300 毫秒延迟。一切都很好,除了我失去了在 textarea 中输入文本的能力。简单的单行字段有效,但多行文本区域无效。

当我点击文本区域时,键盘会弹出,我可以开始输入。输入的第一个字母出现在文本区域 - 仅此而已。随后的字母没有。如果我关闭键盘并再次点击文本区域,我可以再输入一个字母。

我已经尝试了所有建议,包括 needsclickneedsfocus 等。我尝试编辑 fastclick.js 以扩展处理 input 元素的特殊代码以也覆盖 textarea - 没有。

我可能因为它而不得不转储 fastclick 并自己手动完成所有事情,因为我已经在这个问题上失去了将近一周的时间。然而,在我走那条路之前,也许有人可以为我指明正确的方向。

请注意,该问题出现在装有 iOS 9.2(特别是 9.2.1 - 最新版本)的 iPad 和 iPhone 上。

【问题讨论】:

    标签: javascript html ios ipad fastclick


    【解决方案1】:

    好的,原因很简单 - 与 fastclick 无关。是 this answer 真正为我解决了这个问题。

    在我的 CSS 中,我有以下内容:

    body * {
        -webkit-touch-callout: none;
        -webkit-user-select: none;
        user-select: none;
    }
    
    body input {
        -webkit-touch-callout: text;
        -webkit-user-select: text;
        user-select: text;
    }
    

    这样做是为了对付愚蠢的用户,他们会在按钮上“touchstart”然后开始思考他们想要什么 - 在“touchend”之前,ios 会进入复制/粘贴模式。

    然后在输入中明确禁用它以允许在文本中复制/粘贴。然而,我忘了在第二部分中包含 textarea 。现在第二块看起来像这样:

    body input, body textarea {
        -webkit-touch-callout: text;
        -webkit-user-select: text;
        user-select: text;
    }
    

    一切都按预期进行。

    【讨论】:

      【解决方案2】:

      jQuery 修复,

      $('input.form-control,textarea').on('click',function(){
          $(this).focus();
      });
      

      这在我的情况下有效。

      【讨论】:

      • 这对我有用,因为父元素有一个 mousedown 事件阻止光标进入文本区域。因此,不必删除 mousedown,添加它可以让我保留这两个功能。
      猜你喜欢
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 2017-03-20
      • 1970-01-01
      • 2011-01-07
      • 2021-01-15
      • 2015-06-08
      相关资源
      最近更新 更多