【问题标题】:Control text selection behavior in iOS Mobile Safari and/or UIWebView?在 iOS Mobile Safari 和/或 UIWebView 中控制文本选择行为?
【发布时间】:2014-03-05 07:55:57
【问题描述】:

我有一个包含多个段落的长 HTML 文档。当我尝试在 iOS 上的 Mobile Safari 或 UIWebView 中选择文本时,会发生以下情况:

  1. 首先,我在选择时获得了字符级精度。
  2. 然后,当我选择更多时,精度下降到两行文本,最终下降到整个段落。没有办法在我想要的地方准确地结束我的文本选择。

当我将 CSS contentEditable 属性设置为 true 时,我保留了字符级精度,但键盘也出现了,这当然是我不想要的。

无论我选择多长的文本,有什么方法可以保持字符级别的选择精度?

【问题讨论】:

  • 你是用

    还是
    来换行?

  • @Unykvis 有许多不同的块和内联元素用于样式(div、spans 等)。
  • 您能否尝试使用

    与该块分开来制作 2 个段落?我认为你真的需要在他们之间有

  • @Unykvis 谢谢,但我对可以应用到现有文档而不修改其结构或标记的通用解决方案感兴趣。
  • 如果不修改网页结构,您将找不到通用的解决方案——您无法编辑移动 Safari 处理文本选择的方式...

标签: html ios css uiwebview mobile-safari


【解决方案1】:

由于您还选择了文本的标题,因此浏览器会将其识别为完整的文本并选择整个段落。 顺便说一句,不看HTML源代码就帮不了你!

【讨论】:

    【解决方案2】:

    你可以使用 CSS 属性来阻止用户选择文本。 你可以像这样使用:

    html
    {
       user-select:none;
    }
    

    【讨论】:

    • 谢谢,但我想要选择文本,但要以更精确的方式。
    【解决方案3】:

    iOS 8 的WKWebView 或许能够解决这个问题。 WKWebViewConfiguration 有一个名为 selectionGranularity 的属性。评论内容如下:

    用户可以交互选择的粒度级别 Web 视图中的内容。可能的值在 WK选择粒度。默认值为 WKSelectionGranularityDynamic。

    两个可能的值之一是WKSelectionGranularityCharacter。评论说:

    选择端点可以放置在任何字符边界。

    我还没有尝试过,但听起来很有希望!

    7/6/15 更新:看起来没那么容易:Text Selection in WKWebView: WKSelectionGranularityCharacter

    2015 年 7 月 10 日更新:当您仔细研究 iOS Kindle 应用程序时,您会发现他们在 JavaScript 中重新实现了“原生”文本选择,因为它们无法制作原生文本选择按照他们想要的方式行事。我很确定他们在决定重新实施之前一定已经尝试了其他所有方法。

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,

      我通过一行 CSS 解决了这个问题:

      display: inline-block;
      

      两者都适用于 Safari 和 WebView。

      【讨论】:

      • 谢谢。您能否更详细地解释一下这是如何解决这个问题的,尤其是在加载任意网站时?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 2017-08-06
      • 2017-09-03
      • 1970-01-01
      相关资源
      最近更新 更多