如何在可编辑的 DIV 中输出美化的原始 HTML 代码

Posted

技术标签:

【中文标题】如何在可编辑的 DIV 中输出美化的原始 HTML 代码【英文标题】:How to output prettified raw HTML code inside an Editable DIV 【发布时间】:2021-09-20 09:15:44 【问题描述】:

我一直试图在可编辑的 DIV 中输出原始 html,但 <div> 被注释掉了。

这就是我要输出的(包括``):

\`<div class="flexContainer">HELLO WORLD</div>\`

这是我得到的(请注意 HELLO WORLD 没有包裹在 div 中):

`HELLO WORLD`;

呼唤

let htmlCode = `\`<div class="flexContainer">HELLO WORLD</div>\`;`;
document.getElementById(myEditableDIVInputArea_Id).innerHTML = js_beautify(<pre><code>$htmlCode</code></pre>);

如何获取原始 HTML 输出?

提前谢谢大家。

【问题讨论】:

不要使用innerHTML 因为它会输出元素而不是div标签字符串 【参考方案1】:
function escapeHtml(unsafe) 
    return unsafe
         .replace(/&/g, "&amp;")
         .replace(/</g, "&lt;")
         .replace(/>/g, "&gt;")
         .replace(/"/g, "&quot;")
         .replace(/'/g, "&#039;");


let htmlCode = escapeHtml('<div class="flexContainer">HELLO WORLD</div>')
document.getElementById(myEditableDIVInputArea_Id).innerHTML = js_beautify(<pre><code>$htmlCode</code></pre>);

【讨论】:

【参考方案2】:

您可以将它们插入为文本而不是 HTML

let htmlCode = `\`<div class="flexContainer">HELLO WORLD</div>;\``
document.getElementById('x').innerText = htmlCode;
&lt;div id=x contenteditable="true"&gt;&lt;/div&gt;

【讨论】:

顺便说一句,他想用 ` 输出`&lt;div class="flexContainer"&gt;HELLO WORLD&lt;/div&gt;` @Anonymous 谢谢。错过(包括``)部分 @Program-Me-Rev 看起来您可以在插入代码后调用highlightElement。 (不确定那个库,但格式化的代码输出一开始不应该是有效的 HTML 本身吗?)

以上是关于如何在可编辑的 DIV 中输出美化的原始 HTML 代码的主要内容,如果未能解决你的问题,请参考以下文章

如何在 DIV 中获取元素名称和 ID 的类型

文本编辑器弹出时内容可编辑光标位置在可编辑 div 中

在可编辑div中插入文字或图片的问题解决思路

移动端的坑 之 在可编辑的div中实现placeholder

如何在summernote div中计算图像?

可编辑div问题总结(光标,显示等)