我有一个使用以下
进行编码/解码的字段即。当用户在子模态中更新时,我
self.options.eventDispatcher.trigger("updateMyField", encodeURIComponent(myFieldVal));
我在父模态中听这个并说
$("#myFieldDiv").html(decodeURIComponent(response));
这里的响应是字段值。
现在我的问题是我输入
<script>alert("1")</script>
我正在收到警报。我如何修复此问题,以便它不会发出警报,只是将其作为文本写入我的div myFieldDiv?
答案 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 = {
'<': '<',
'>': '>'
}
return chars[charToReplace];
})
);
答案 2 :(得分:0)
使用text()
插入值,因为它会对找到的任何HTML进行编码:
self.options.eventDispatcher.trigger("updateMyField", myFieldVal);
$("#myFieldDiv").text(response);
请注意,小提琴仅连接<script>
标记以绕过JSFiddle的安全设置。