繁体   English   中英

脚本预处理的基础

[英]Basics of script pre-processing

我有以下代码:

<script id="toModify" >
Invalid javascript that will cause errors
</script>

<script>
var s=document.getElementById("toModify");
s.innerHTML="alert('Hi')";
</script>

而且它不起作用。

我知道至少需要做两件事才能使它起作用:

  • 阻止第一个脚本第一次运行。
  • 修改后,重新运行第一个脚本。

我该怎么做? 还有什么我需要做的吗?

  • 使用type属性,以使浏览器不执行脚本:

     <script id="toModify" type="text/x-custom-whatever">...</script> 
  • 只需eval()执行代码即可。

当然,动态生成代码充满了风险。 注意不要引入安全漏洞。

将脚本的类型设置为与不支持 的“文本/ javascript”不同 的类型将使脚本无法得到处理。

因此<script id="toModify" type="text/unprocessed">...</script>

那么您可以创建一个类型为script的新元素,设置它的innerHTML并将其附加到文档中。

就像是

var s = document.getElementById("toModify");
var processed = document.createElement('script'); // create a new script element

processed.innerHTML = "alert('Hi')"; // or do something with the s.innerHTML
document.body.insertBefore(processed, document.body.firstChild); // add the new element to the body, it gets executed immediately..

演示在http://jsfiddle.net/GG7cT/

你不能 第一个脚本将始终首先运行。 即使它具有defer属性,也不确定您是否可以更改其内容。

另请参阅此答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM