Javascript 让HTML看起来像网页上的HTML

Javascript 让HTML看起来像网页上的HTML,javascript,html,Javascript,Html,在堆栈溢出时,可以使用ctrl k使HTML看起来像HTML,而不是它的输出 大概是 <div> <p>Hello world</p> </div> <pre> <code> &lt;div&gt; &lt;p&gt;Hello world&lt;/p&gt; &lt;/div&gt; </code> <

在堆栈溢出时,可以使用ctrl k使HTML看起来像HTML,而不是它的输出

大概是

<div>
    <p>Hello world</p>
</div>
<pre>
  <code>
    &lt;div&gt;
    &lt;p&gt;Hello world&lt;/p&gt;
    &lt;/div&gt;
  </code>
</pre>

我正在做一个项目,我想做一些类似的事情。我假设它使用一些javascript函数来执行此操作,但我不确定是否有人知道它是如何工作的?

如果您支持PHP,您可以使用此函数。

在javascript中,您可以使用string.replace来实现相同的功能

例如:

function preIt(code){
    code = code.replace(/[&<>]/g, function(tag){
        return {'<' : '&lt;', '>' : '&gt;', '&' : '&amp;'}[tag];
    });
    return "<pre>"+code+"</pre>";
}

正确的是,HTML必须是HTML编码的,才能看到括号。<符号编码为小于,而>符号编码为大于

所以问题是,你如何在不需要记住去做的情况下自动做到这一点

您可能希望签出语法高亮显示:

语法高亮显示:

您也可以按照sarbbottam的建议使用字符串替换并编写自己的函数。

您可以尝试以下方法:

document.write(preIt("<div><p>Hello world!</p></div>"));
用法:

<div>
    Hello world!<br />
</div>
该函数将HTML代码作为输入,然后对代码执行替换。它使用回调函数将匹配的字符替换为适当的


或者,您可以实现。

StackOverflow只是在选择元素中的行时使用4个空格移动所选行,然后将其用作可通过JavaScript检测的标记。它看起来类似于以下内容:

$( "p" ).click(function() {
  var htmlString = $( this ).html();
  $( this ).text( htmlString );
});
; }; //console.log'value==',value; $body.appendvalue; }; 在以下文本中,确保在需要格式化为可显示HTML的每一行前面有4个空格:


然后最后点击点击我!按钮为了简洁起见,在这个代码示例中使用了jQuery。

因此我最终使用jQuery的.html方法来格式化html

这是文件

和小提琴

造成这种情况的原因将取决于所使用的技术。请提供问题的链接,或至少提供更多上下文。HTML是如何添加到页面的?是您键入的还是由服务器端技术渲染的?用于预格式化文本。如果要在中显示标记,则需要按照示例将标记转换为实体。您可以手动执行,也可以通过编写JS或php脚本执行。php中的html_entitesstr此链接也与使用标记中的html实体相关:注意:您应该在类似39;的任何内容之前添加0;。所以是039;这将是PHP HTML兼容的。出于兼容性原因,应尽可能使用实体名称,如和。您可以在PHP中添加headerContent类型:text/plain,这将强制浏览器将页面的其余内容呈现为纯文本。
<div>
    Hello world!<br />
</div>
$( "p" ).click(function() {
  var htmlString = $( this ).html();
  $( this ).text( htmlString );
});