我想创建一个带有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>
答案 0 :(得分:6)
它实际上比你想象的更简单:
var el = $(this).closest('tr')
.nextAll(":has(input):first")
.find('input')
.prop("disabled", false)
.removeClass("disabled");
function add_tags(tags)
{
document.execCommand('bold');
}
答案 1 :(得分:3)
编写自己的编辑器不是那种噩梦 - 但它需要花费大量时间,注重细节和学习。
当我写下我的时候,我最终将所有样式转换为跨度 - 最后它更容易并且在浏览器之间提供一致性。
因此,对于跨度,您可以用(例如:) <span style="font-weight:bold">your selected text</span>
工作待遇......
答案 2 :(得分:2)
设置&#34; container_contenteditable&#34;作为id属性,因为您使用的是getElementById。
您可以使用替换功能替换所选文本。这是修复。
function add_tags(tags)
{
var container_contenteditable = document.getElementById("container_contenteditable");
//Retrieve the selected text :
var sel = window.getSelection();
var text = container_contenteditable.innerHTML;
container_contenteditable.innerHTML = text.replace(sel, '<b>'+sel+'</b>');
}
&#13;
<input type="button" value="B" style="font-weight:bold;" onclick='add_tags("b");'>
<div id="container_contenteditable" contenteditable>Make the name siva to bold</div>
&#13;
答案 3 :(得分:1)
你可以在选择中包装<b>
- 标签:
此外,您的HTML应如下所示:
<input type="button" value="B" style="font-weight:bold;" onclick='add_tags("b");'>
<div id="container_contenteditable" contenteditable>TestTextTest</div>
JavaScript:
function add_tags(tags) {
container_contenteditable = document.getElementById("container_contenteditable");
//Retrieve the selected text :
sel = window.getSelection();
//Check if selection does contain something
if (sel != "") {
//set the innerHTML of container_contenteditable
//we're just wrapping a <b>-tag around the selected text
container_contenteditable.innerHTML = "<b>" + sel + "</b>";
} else {
//if the selected text was blank
alert("Nothing selected.");
}
}