将脚本渲染为HTML而不执行它

时间:2016-03-18 11:49:11

标签: javascript html

  <html>

     <p> Some html </p>

     <script> some script </script>

  </html> 

如何识别脚本标记并将其呈现为内容。

我有一个专门用于在我的网页中显示html的div,如果它有任何脚本我想将它们作为内容呈现,但是当将html附加到div时,脚本会被执行,我不想发生。如何防止脚本执行,是否有任何库可以执行此操作。

注意: 1.还应防止执行内联脚本。 2.附加的Html内容是动态的,并且来自电子邮件侦听器源

提前致谢!

3 个答案:

答案 0 :(得分:1)

  

但是在将html附加到div时,脚本会被执行,我不想发生这种情况。如何防止脚本执行,是否有任何库可以执行此操作。

因为你说你已经拥有了div内容,所以一旦你追加它就会执行脚本,这是默认行为,我们可以做的是在附加你的div内容之前我们可以修改内容字符串来替换<script></script> &lt;script&gt;&lt;/script&gt;。所以这是它的演示。

&#13;
&#13;
var divContent = '<script>alert("I must not execute!!");<\/script>';

var res = divContent.replace(/<script/g,"&lt;script&gt;").replace(/<\/script/g,"&lt;/script&gt;");

document.getElementById("output").innerHTML = res;
&#13;
<div id="output">
   
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

使用document.ready();方法。这只会在呈现所有HTML元素后运行JavaScript。更好的是,将您的函数包装在jQuery简写中:

$(function() {
    alert( "DOM elements rendered!" );
});

答案 2 :(得分:-2)

您可以尝试使用jQuery document.ready();函数,仅在页面加载时允许脚本执行。