Javascript:如何在文本选择周围插入标签?

tot*_*ssi 6 javascript contenteditable

我想创建一个带有contenteditable div的WYSIWYG HTML文本编辑器.

为此,我使用window.getSelection()来检索所选文本,当我单击一个按钮(按钮粗体)时,我执行一个函数来在所选文本周围添加粗体标签.

但是我对javascript代码(没有JQuery)没有任何想法来添加粗体标签.

这是我的代码:

<input type="button" value="B" style="font-weight:bold;" onclick='add_tags("b");'>

<div id="container_contenteditable" class="container_contenteditable" contenteditable></div>

<script type="text/javascript">

function add_tags(tags)
{
    container_contenteditable = document.getElementById("container_contenteditable");

    //Retrieve the selected text :
    sel = window.getSelection();
}

</script>
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 6

它实际上比你想象的更简单:

function add_tags(tags)
{
    document.execCommand('bold');
}
Run Code Online (Sandbox Code Playgroud)
<input type="button" value="B" style="font-weight:bold;" onclick='add_tags("b");'>

<div class="container_contenteditable" contenteditable style="border:1px solid; margin: 10px 0; height: 100px;"></div>
Run Code Online (Sandbox Code Playgroud)

  • 这确实是正确的方法.但编写自己的编辑器是一个噩梦......每个浏览器都有自己的实现,IE使用`<strong>`代替`<b>`作为示例.一些浏览器添加随机属性.每个浏览器都有自己的关于换行符的想法,`<div>`,`<p>`,`<br />等等......我曾尝试编写自己的编辑器,但最终放弃了很多东西,需要做的是让它完全相同的crossbrowser工作. (2认同)
  • @totoaussi,我认为你可以使用document.execCommand('insertOrderedList')来做到这一点.以下是您可以使用它的命令列表https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand (2认同)