Javascript:execCommand("removeformat")不会删除h2标记

oyv*_*vey 7 javascript

我正在调整一个所见即所得的编辑器,我正在尝试创建一个将删除所选文本的图标h2.

在以前的版本中,以下命令完美地运行:

oRTE.document.execCommand("removeformat", false, "");
Run Code Online (Sandbox Code Playgroud)

但是在当前版本中,尽管该命令成功地从选定文本中删除了诸如粗体,下划线和斜体之类的h2标记,但它使标记保持不变.

(有趣的是,execCommand("formatblock"...)成功创建了h2标签.)

我想我将不得不放弃execCommand并找到另一种方式,但我也认为它不仅仅是一行代码!将不胜感激的建议.

Bar*_*mar 5

这与提议的W3C 编辑 API 一致。它有一个格式化元素列表,H#元素没有列出。这些被认为是结构性的,而不仅仅是格式。删除这些标签并没有比删除UL或更有意义P

  • 我在这里发布以获得比这更详细的答案。请记住,我只需要从当前突出显示的文本中删除 h2 标签。 (2认同)

shu*_*uji 5

您可以将格式更改为div,这不是最好的解决方案,但是它很有效而且很简短:

document.execCommand('formatBlock', false, 'div')
Run Code Online (Sandbox Code Playgroud)

还有另一种解决方案,可以从选定的文本中获取最接近的父级,然后可以将其展开,请注意,这可以是某些标记,例如<b>:

var container = null;
if (document.selection) //for IE
    container = document.selection.createRange().parentElement();
else {
    var select = window.getSelection();
    if (select.rangeCount > 0)
        container = select.getRangeAt(0).startContainer.parentNode;
}
$(container).contents().unwrap(); //for jQuery1.4+
Run Code Online (Sandbox Code Playgroud)