如何在动态javascript文件中安全地嵌入动态html,使其不会';不要破坏javascript
我需要动态构建一个javascript文件,并在其中嵌入一些html,以便在运行时,javascript能够将html添加到DOM中 我有一个javascript.js,可以使用wicket进行插值。它包括:如何在动态javascript文件中安全地嵌入动态html,使其不会';不要破坏javascript,java,javascript,html,escaping,Java,Javascript,Html,Escaping,我需要动态构建一个javascript文件,并在其中嵌入一些html,以便在运行时,javascript能够将html添加到DOM中 我有一个javascript.js,可以使用wicket进行插值。它包括: var html = "${somehtml}" document.write(html); 目前,如果我用包含单引号的html替换${somehtml},它显然会破坏html 我尝试使用URLEncoder.encode()和javascriptunescape(),但这破坏了jav
var html = "${somehtml}"
document.write(html);
目前,如果我用包含单引号的html替换${somehtml}
,它显然会破坏html
我尝试使用URLEncoder.encode()
和javascriptunescape()
,但这破坏了javascript
我想知道我是否可以对base64进行编码/解码?或者有其他解决方案吗?首先用两个反斜杠替换每个反斜杠,然后用一个反斜杠和一个引号替换每个引号。差不多
var newstring = mystring.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
ApacheCommons提供了一个名为。它可以对字符串进行编码,以便它们可以安全地嵌入到javascript(ecmascript)中。我怀疑这是您想要的,因为您正在动态构建js,但嵌入的javascript文件(*.ejs)允许您从外部文件加载标记(也可以选择传入自定义数据)而不是把每件事都加上引号,看起来乱七八糟 它至少对开发有用,但我不希望向客户端发送更多文件
字符串(Base64.encodeBase64(html.getBytes())可以工作,但需要相当多的javascript来解码。如果你想混淆你的html,那就好了。不过,escapeJavaScript(html)更整洁。
<ul>
<% for(var i=0; i<supplies.length; i++) {%>
<li><%= supplies[i] %></li>
<% } %>
</ul>
someVar += "<ul>";
for(var i=0; i<supplies.length; i++) {
someVar += "<li>" + supplies[i] + "</li>";
}
someVar += "</ul>";