好的,有些人会知道我的意思并编辑我的问题,但他们做错了。

更好的解释:

您有一个内容可编辑的 div 文本 This is a Test String.
如果你现在在 execCommand('underline') 上使用 Test String 你会得到 This is a <u>Test String</u>如果你现在在 execCommand('strikethrough') 上使用 is a Test 你会得到 This <s>is a <u>Test</u></s><u>String</u> ,这是正确的。

因此,在 HTML5 中 <u><s> 已过时。
对于第一个 execCommand,您可以将 surroundContents()<span style="text-decoration:underline;"> 一起使用。如果您现在将 surroundContets() 用于第二个 execCommand,您将收到 BAD_BOUNDARYPOINTS_ERR

我想要的是一个函数,它在这种情况下像 execCommand 一样工作,但是我可以用 witch HTML-Tag 定义函数,字符串将被包裹......(如果有任何重叠,它应该是智能的......)

最佳答案

surroundContents() 会有问题:如果选择包含多个块元素,例如 <div> s 或 <p> s,则包围的内容将被放置在一个新块中,使其脱离原始位置。为了克服这个问题,您可以在此处轻松调整我的答案:apply style to range of text with javascript in uiwebview

您需要执行以下操作:

  • 使用规则“text-decoration: underline;”创建一个 CSS 类
  • 为Firefox等没有的浏览器添加intersectsNodeRange方法(参见MDC示例:https://developer.mozilla.org/en/DOM/range.intersectsNode)
  • 如果您关心 IE,则需要编写一个完全不同的解决方案。
  • 关于javascript - 替代 execCommand ('underline' );,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3032894/

    10-11 12:52