gpt4 book ai didi

javascript - execCommand 的替代方案 ('underline' );

转载 作者:搜寻专家 更新时间:2023-10-31 19:28:54 33 4
gpt4 key购买 nike

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

更好的解释:

您有一个 contenteditable 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在这种情况下,但是我可以使用女巫 HTML-Tag 定义函数,字符串将被包装……(如果有任何重叠,它应该是智能的……)

最佳答案

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

您需要执行以下操作:

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

关于javascript - execCommand 的替代方案 ('underline' );,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3032894/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com