【问题标题】:Javascript/jQuery encoding for special characters when using val()使用 val() 时特殊字符的 Javascript/jQuery 编码
【发布时间】:2012-07-31 18:16:11
【问题描述】:

我对特殊字符(如 &、ä 等)及其对应的 HTML 编码书写(如 &ä 等)有疑问。

  • 当它们用于输入字段的值标签时,浏览器会自动解码,完全没有问题。

  • 当使用 jQuerys val() 函数时,浏览器没有机会正确评估内容

    $("button").click(function(){
        $("#test").val("&");
    });
    

有什么想法吗?

【问题讨论】:

  • 当您使用val 方法时,实际上没有进行编码或解码。如果字段中有初始值,则在解析 HTML 时对其进行解码,而不是在读取值时进行解码。为什么首先需要在这里使用 HTML 编码值?
  • 因为我想在输入字段中动态输入数据(基于下拉选择框,您可以在其中选择数据集)。并且这里插入的数据必须是 XSS 安全的。
  • 你做错了。使用一些任意编码不会使代码更安全,但更安全,您应该正确编码该值以了解它的使用方式。如果将文本放在字符串文字中,则应为此目的对其进行编码,而不是 HTML 编码。
  • 好的,我明白了。你有一个例子吗?它需要在输入字段中,因为之后应该可以更改文本。
  • 如果您收到信息,请不要忘记将答案标记为已接受

标签: javascript jquery


【解决方案1】:

您可以使用这个古老的实体解码技巧:

$("button").click(function(){
    $("#test").val($("<div>").html("&amp;").text());
});

工作演示:http://jsfiddle.net/AndyE/XegGy/

它创建一个临时的&lt;div&gt; 元素,将其HTML 设置为&amp;amp;,然后获取文本值,即&amp;

【讨论】:

    【解决方案2】:

    试试.html()函数:

    $("#test").html("&amp;");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多