Javascript execCommand的可选选项(';下划线';);
好吧,有些人会知道我的意思,并编辑我的问题,但他们做错了 更好的解释是: 您有一个contenteditableJavascript execCommand的可选选项(';下划线';);,javascript,html,contenteditable,Javascript,Html,Contenteditable,好吧,有些人会知道我的意思,并编辑我的问题,但他们做错了 更好的解释是: 您有一个contenteditablediv,其中包含文本这是一个测试字符串。。 如果现在在测试字符串上使用execCommand('underline'),您会得到这是一个测试字符串 如果现在使用上的execCommand('strikethrough')是一个测试,您会得到这是一个测试字符串,这是正确的 因此,在HTML5中,和是过时的。 对于第一个execCommand,您可以将surroundContents()与
div
,其中包含文本这是一个测试字符串。
。
如果现在在测试字符串上使用execCommand('underline')
,您会得到这是一个测试字符串
如果现在使用上的execCommand('strikethrough')
是一个测试
,您会得到这是一个测试字符串
,这是正确的
因此,在HTML5中,
和
是过时的。
对于第一个execCommand
,您可以将surroundContents()
与
一起使用。如果现在对第二个execCommand
使用surroundContets()
,则会收到坏的\u边界点\u ERR
我想要的是一个类似于本例中的execCommand
的函数,但我可以使用witch HTML标记定义字符串将被包装的函数…(如果有重叠,它应该是智能的…CSS文本装饰:下划线
的surroundContents()
将出现问题:如果选择包含多个块元素,例如
s或
s,则包围的内容将被放置在新块中,使其脱离原始位置。要克服这一点,您可以很容易地修改我的回答:
您需要执行以下操作:
- 使用规则“文本装饰:下划线
- 为没有的浏览器添加
intersectsNode
方法Range
,例如Firefox(参见MDC的示例:)
- 如果你关心IE,你需要写一个完全不同的解决方案
除了Javascript和HTML5之外,这里还涉及到一些东西。非常好,哈哈,我不标记CSS,我知道在CSS中如何制作下划线,…问题是关于execCommand(“下划线”)的备选方案,它是一个真正的备选方案,因为即使标记顺序不正确,它也会绕过这个问题。您还可以将命令放入try..catch
块中,以捕获不正确的使用错误。谢谢,这很有帮助。而且…它在Safari中有效,我不需要更多D