Javascript 朗吉周围内容物更换

Javascript 朗吉周围内容物更换,javascript,rangy,Javascript,Rangy,我正在考虑在网页上实现一个简单的2按钮切换,以在H1标题和H2标题之间切换一些选定的文本。surroundContents方法工作得很好,但是我在尝试替换现有父标记元素节点时遇到了一个问题。我尝试过各种各样的方法,但都没有成功 基本功能如下。使用相同的选定文本并依次运行这两个函数将导致某些输出,例如: 选择“测试文本”的文本,然后选择H1选项后: 测试文本 如果再次选择相同的文本,并且这次按下了H2选项:testtext 这是很好的,也是预期的,但我真的在寻找一种方法来删除原始的父标题元素,这样

我正在考虑在网页上实现一个简单的2按钮切换,以在H1标题和H2标题之间切换一些选定的文本。surroundContents方法工作得很好,但是我在尝试替换现有父标记元素节点时遇到了一个问题。我尝试过各种各样的方法,但都没有成功

基本功能如下。使用相同的选定文本并依次运行这两个函数将导致某些输出,例如:

选择“测试文本”的文本,然后选择H1选项后:
测试文本

如果再次选择相同的文本,并且这次按下了H2选项:
testtext

这是很好的,也是预期的,但我真的在寻找一种方法来删除原始的父标题元素,这样标题元素就不会嵌套(例如,文本被h1或h2包围,而不是两者都包围)。我曾尝试访问parentNode等,但没有设法使这种方法发挥作用。我尝试过查看下面的parentElement建议,但是我无法让rangy将更改后的父元素写回DOM,或者找到一种令人满意的方法来确定对象在DOM中的位置以替换它。这很快就变成了一种笨拙的方法,必须有更好的选择

我知道rangy CssApplier模块可以处理这种情况,但我需要处理实际的元素,而不是css

我还注意到,raptor editor使用rangy实现文本编辑器时,在应用标题时遇到了完全相同的问题:

这个问题也是相关的,但就我所知,这个特殊的元素问题不能用execCommand处理-

收到的任何帮助或建议。

请尝试:

highlighter.unhighlightSelection()

Rangy还没有真正提供实现这一点的工具。你们看了吗?嗨,蒂姆,不幸的是FormatBlock不是很跨浏览器,所以我不能用这个。兰吉的作品很棒,我喜欢你的图书馆。显然,我当然有一个功能要求;)不幸的是,Rangy中仍然没有实现此功能,但是您可以查看演示/bookmark.html,了解Rangy中“execCommand”的用法和示例-这加上codePen上的execCommand扩展演示:-是一个很好的帮助-顺便提一句-很棒的工作!这并不能回答OP的问题。
highlighter.unhighlightSelection()