javascript-在contenteditable中插入自定义标签

我有这个:

<input type="button" value="B" onclick="document.execCommand('bold', false, '');" />
<div contenteditable="true">Lorem Ipsum...</div>

document.execCommand可以正常工作.但是,如果要添加自定义标签(如< customtag>< / customtag>)怎么办?围绕所选文字?

该按钮需要将标签添加到选定的文本,或者如果已经包含标签,则将其删除.

是否有一个仅HTML的解决方案.如果没有,有没有纯Javascript解决方案?

解决方法:

您需要insertHTML命令:

基本用法:

<input type="button" value="html" onclick="document.execCommand('insertHTML', false, '<customtag>'+window.getSelection()+'</customtag>');" />

要打开和关闭自定义标签,需要更复杂的逻辑:

<input type="button" value="html" onclick="document.execCommand('insertHTML', false, toggle(window.getSelection());" />

function toggle(txt)
{
    return is_enclosed_within_a_customtag(txt)
         ? strip_custom_tag_off(txt)
         : "<customtag>"+txt+"</customtag>"
    ;   
}

更新资料

函数is_enclosed_within_a_customtag至少可以这样实现:

function is_enclosed_within_a_customtag(txt)
{
    return txt.startsWith("<customtag>") && txt.endsWith("</customtag>");
}

…,并通过传递window.getSelection().toString()作为参数来调用.

上一篇:javascript-如何在IE中的contentEditable div中获取选定的textnode?


下一篇:javascript-寻找一种方法来呈现网页上文字周围的轮廓