Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在动态javascript文件中安全地嵌入动态html,使其不会';不要破坏javascript_Java_Javascript_Html_Escaping - Fatal编程技术网

如何在动态javascript文件中安全地嵌入动态html,使其不会';不要破坏javascript

如何在动态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

我需要动态构建一个javascript文件,并在其中嵌入一些html,以便在运行时,javascript能够将html添加到DOM中

我有一个javascript.js,可以使用wicket进行插值。它包括:

var html = "${somehtml}"

document.write(html);
目前,如果我用包含单引号的html替换
${somehtml}
,它显然会破坏html

我尝试使用
URLEncoder.encode()
和javascript
unescape()
,但这破坏了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>";