4

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

更好的解释:

你有一个 contenteditablediv的 text 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()with a <span style="text-decoration:underline;">。如果您现在surroundContets()第二次使用 ,execCommand您将收到BAD_BOUNDARYPOINTS_ERR.

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

4

2 回答 2

1

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

您需要执行以下操作:

  • 使用规则“text-decoration: underline;”创建一个 CSS 类
  • 为没有它的浏览器添加一个intersectsNode方法,例如 Firefox(参见 MDC 示例: https ://developer.mozilla.org/en/DOM/range.intersectsNode )Range
  • 如果您关心 IE,则需要编写一个完全不同的解决方案。
于 2010-06-14T00:41:54.397 回答
0

CSS text-decoration: underline

于 2010-06-13T16:27:24.500 回答