【问题标题】:print html tags in javascript在javascript中打印html标签
【发布时间】:2011-08-03 09:42:56
【问题描述】:

感谢阅读!

var data = "<html><head><title>Hello</title></head><body>Hello Body</body></html>";

我想打印 data 包括 HTML 标签,而不需要浏览器呈现 HTML 标签并只显示“Hello Body”。

我试过了:

str = str.replace("<", "");

但徒劳无功。

【问题讨论】:

  • “打印”到底是什么意思?在哪里打印?
  • 我认为他的意思是将该字符串写入浏览器并转义标签,以便它们在页面上可见,而不是解析到 DOM 中。
  • 你尝试过什么“几乎所有东西”?
  • @fredrik:OP 从来没有提到 PHP,他正在寻找 JavaScript 解决方案。
  • 嘿嘿伙计们!给我一些时间来回应你的cmets!你不能就这样投反对票!这是一个有效的问题!如果您没有耐心阅读或理解它 - 只需忽略并继续前进!

标签: javascript html printing tags


【解决方案1】:
 data = data.replace(/</g, "&lt;").replace(/>/g, "&gt;");

当浏览器遇到&amp;lt;(称为字符实体)时,它会将其替换为文字“

/&lt;/g 是一个正则表达式,它只是说“匹配字符串中的所有'g 表示全局执行。如果没有g,它只会替换它遇到的第一个'

最后一点,最好使用 jQuery 等库来执行此操作。这是一种很容易出错并错过边缘情况的东西。让经过强化、经过良好测试且安全的库函数为您完成。

【讨论】:

  • 太棒了!真的感谢 TON 的那段代码。这有帮助!
  • 我建议遵循 Christian Sciberras 的回答,他的方法更好。
  • 好的,马特。谢谢!你的是我第一次尝试,它奏效了。由于我只是将其用于调试,因此我会使用您的答案,但是是的,对于成熟的产品-克里斯蒂安的答案将是最佳选择!
【解决方案2】:

实际(更安全的修复)如下:

function htmlspecialchars(text){
    return jQuery('<div/>').text(text).html();
}

在纯 javascript 中,这将是:

function htmlspecialchars(text){
    var tnd=document.createTextNode(text);
    var div=document.createElement("DIV");
    div.appendChild(tnd);
    return div.innerHTML;
}

【讨论】:

  • OP 没有指定 jQuery,但这很聪明! +1
  • @Pekka 好吧,我输入的是纯 JavaScript 实现,需要一些时间:)。
  • 不错!这比替换 &lt;&gt; 要好得多。
  • 是的,这肯定是更好的答案
  • 感谢 Christian 的优雅回答!
【解决方案3】:

这很丑,但你可以试试这个(借用 Prototype 的 escapeHTML() 实现):

var data = "<html> <head> <title> Hello </title> </head> <body> Hello Body </body> </html>"
    .replace(/&/g,'&amp;')
    .replace(/</g,'&lt;')
    .replace(/>/g,'&gt;');

document.write(data);

当然创建一个小辅助函数会更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 2016-10-11
    • 2020-07-04
    相关资源
    最近更新 更多