Javascript编码/解码字段

时间:2015-02-17 12:16:26

标签: javascript jquery

我有一个使用以下

进行编码/解码的字段

即。当用户在子模态中更新时,我

self.options.eventDispatcher.trigger("updateMyField", encodeURIComponent(myFieldVal));

我在父模态中听这个并说

$("#myFieldDiv").html(decodeURIComponent(response));

这里的响应是字段值。

现在我的问题是我输入

<script>alert("1")</script>

我正在收到警报。我如何修复此问题,以便它不会发出警报,只是将其作为文本写入我的div myFieldDiv?

3 个答案:

答案 0 :(得分:1)

尝试使用$ .text而不是$ .html - $("#myFieldDiv").text(decodeURIComponent(response));

答案 1 :(得分:0)

只是不解码它,写它编码

$("#myFieldDiv").html(response);

修改

<>替换为html实体:

self.options.eventDispatcher.trigger("updateMyField", myFieldVal.replace(/[<>]/g, function(charToReplace){
    var chars = {
        '<': '&lt;',
        '>': '&gt;'
    }
    return chars[charToReplace];
    })
);

答案 2 :(得分:0)

使用text()插入值,因为它会对找到的任何HTML进行编码:

self.options.eventDispatcher.trigger("updateMyField", myFieldVal);

$("#myFieldDiv").text(response);

Example fiddle

请注意,小提琴仅连接<script>标记以绕过JSFiddle的安全设置。