javascript - 如何在另一个元素中将 contenteditable div 的内容呈现为 HTML?

标签 javascript

在下面的示例中,将 HTML 输入到 contenteditable div 中应该在 #html_view 中呈现为 HTML,但不是呈现为 HTML,而是呈现为文本。

例如:当输入以下 HTML 时,它应该在红色容器内呈现“sometext”,但字符串按原样传输。

<p style="background-color:red;">sometext</p>

如何在另一个元素中将 contenteditable div 的内容呈现为 HTML?

function move_to_the_other_div(el){
	document.getElementById('html_view').innerHTML = el.innerHTML;
}
#html_view{
  width:300px;
  overflow:hidden;
  border:1px solid gray;
  padding:10px;
  min-height:50px;
}
#code_view{
  width:300px;
  border:1px solid gray;
  padding:10px;
  min-height:50px;
  font-size:18px;
}
<div id="html_view"></div>
<div contenteditable id="code_view" oninput="move_to_the_other_div(this);" onpaste="move_to_the_other_div(this);"></div>

最佳答案

您需要使用 .innerText 从您的 el 获取数据

原因是,当您通过 innerHTML 检索信息时,它会从您的输入字段中提取 HTML 信息,但是,您编写的 HTML 是纯文本的,因此没有HTML 元素。因此,您必须获取纯文本并将目标 div 的 innerHTML 设置为包含 HTML 的字符串,而不是当前输入字段中的 HTML 语法。

还应注意 innerText 不适用于 FireFox

为了跨浏览器兼容性,我建议改用 textContent


文本内容

function move_to_the_other_div(el){
    document.getElementById('html_view').innerHTML = el.textContent;
}

innerText

function move_to_the_other_div(el){
    document.getElementById('html_view').innerHTML = el.innerText;
}

function move_to_the_other_div(el){
	document.getElementById('html_view').innerHTML = el.innerText;
}
#html_view{
  width:900px;
  overflow:hidden;
  border:1px solid gray;
  padding:10px;
  min-height:320px;
}
#code_view{
  width:900px;
  border:1px solid gray;
  padding:10px;
  min-height:320px;
  font-size:18px;
}
<div id="html_view"></div>
<div contenteditable id="code_view" oninput="move_to_the_other_div(this);" onpaste="move_to_the_other_div(this);"></div>

关于javascript - 如何在另一个元素中将 contenteditable div 的内容呈现为 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32484316/

相关文章:

javascript - 通过 Ajax 将 Summernote 代码发布到 PHP,然后插入数据库

javascript - Vuejs 选择动态(多个)元素

javascript - 模块范围的名称是什么?如何引用这个范围?

javascript - 切换和 JavaScript : Can't Get It To Work

javascript - 基本 jQuery slider 在页面加载时无法正确显示(响应式设置)

javascript - 递归 JavaScript 方法范围

javascript - 需要编码作业方面的帮助!如何停止我的 if else 语句,使其只运行一次

javascript - 将元素数组位置更改为顶部

javascript - 如何检查其他数组中存在的值,反之亦然

javascript - 使用 JQuery 添加表单元素