【问题标题】:How to escape ",< and all special characters in JavaScript如何转义 ",< 和 JavaScript 中的所有特殊字符
【发布时间】:2018-01-08 13:55:25
【问题描述】:

如何在 javaScript 中转义所有特殊字符。

我们正在使用它,但它不起作用:

<input type = "text" value="' }{ " : ? > < \ ] [ ' ; / . ,">

【问题讨论】:

  • 这不是 JavaScript,这是 HTML。
  • 您需要在它被放入 html 之前对其进行转义。尝试用 javascript 修复它后不起作用
  • &lt;&gt; 不会在value 内部造成任何问题,问题在于" 引用。在 "' 之前使用反斜杠,否则浏览器会认为您正在结束可以输入值的区域。value="\' }{ \" : ? &gt; &lt; \ ] [ \' ; / . ,"
  • @DeepakKamat 反斜杠不起作用。涉及的是 HTML 解析器,而不是 JavaScript 解析器。
  • 哦。在公然提出任何建议之前,我应该先尝试一下自己。感谢您的指出,Pointy。你的名字恰到好处。 ;)

标签: javascript html escaping


【解决方案1】:

您只需将"&amp;quot; 交换即可。

一个好主意是采用更多的 HTML 实体:

  • &amp;lt; 替换为 &amp;lt;
  • &amp;gt; 替换为 &amp;gt;

&lt;input type = "text" value="' }{ &amp;quot; : ? &amp;gt; &amp;lt; \ ] [ ' ; / . ,"&gt;

【讨论】:

  • 我这么说的主要原因是我会使用一个集中的 HTML 转义例程来执行此操作,并且为了避免愚蠢的错误,我宁愿只有 一个 其中总是逃避在某些情况下可能“危险”的任何角色。毕竟,它不疼。
【解决方案2】:

通过使用浏览器 DOM,您可以让浏览器为您完成工作。

创建一个 HTML 节点,在其上附加一个文本节点,然后在文本节点中放入您希望转义的 html 代码。 仅对于双引号,您可能需要将它们替换为 &amp;quot; 并将单引号替换为 &amp;#39;

function htmlspecialchars(str) {
  var div = document.createElement('div');
  var text = document.createTextNode(str);
  div.appendChild(text);
  return div.innerHTML.replace(/"/g,'&quot;').replace(/'/g,'&#39;');
}

console.log(htmlspecialchars("<html>"));
console.log(htmlspecialchars("<!DOCTYPE=\"RUBBISH\">"));
console.log(htmlspecialchars("' }{ \" : ? > < \\ ] [ ' ; / . ,"))

【讨论】:

    【解决方案3】:

    您正在尝试将以下内容转义为 HTML 属性值或 JavaScript 字符串

    ' }{ " : ? > < \ ] [ ' ; / . ,
    

    作为HTML属性值,如下

    <input type="text" value="' }{ " : ? > < \ ] [ ' ; / . ,">
    

    可以通过在value= 之后转义双引号来修复

    <input type="text" value="' }{ &quote; : ? > < \ ] [ ' ; / . ,">
    

    &amp;quote; 将呈现为 " 字符。

    理想情况下,您还应该转义所有 HTML 保留字符(> 和 &gt; 和 &amp;lt;

    <input type="text" value="' }{ &quote; : ? &gt; &lt; \ ] [ ' ; / . ,">
    

    作为 JavaScript 字符串

    无论您使用单引号分隔符 (') 还是双引号分隔符 (""),都必须对字符串 ' }{ " : ? &gt; &lt; \ ] [ ' ; / . , 进行不同的转义

    单引号
    var str = '\' }{ " : ? > < \ ] [ \' ; / . ,';
    
    双引号
    var str2 = "' }{ \" : ? > < \ ] [ ' ; / . ,";
    

    【讨论】:

      猜你喜欢
      • 2019-07-04
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      相关资源
      最近更新 更多