脚本预处理的基础知识
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()
代码即可执行它。
当然,动态生成代码充满了危险;要非常小心,不要引入安全漏洞。
为脚本设置与不支持的"text/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
属性,我也不确定您是否能够更改其内容。
另请参阅此答案。
相关文章:
- Javascript 二进制搜索/插入预处理
- JavaScript原型设计基础知识
- 节点.js未捕获的异常类型错误:无法设置未定义的预处理 ''
- D3 力导向布局的基础知识
- Javascript:数组和For循环基础知识
- 克隆内容,附加和预处理
- 上传到FTP之前预处理文件
- 2秒后删除新的jQuery预处理节点
- 下拉菜单基础知识
- 预处理Emulator for JavaScript(定时/调试示例)
- 脚本预处理的基础知识
- JavaScript 基础知识
- 如何引用引导类型预处理的数据
- 使用 CSV 文件预处理高图表数据
- 使用HTML5 / javascript更正音频音量输出分贝,关闭预处理
- Ruby on Rails 路由前缀,而不是在 .erb.js 文件中进行预处理
- 如何在咖啡脚本中预处理或包含咖啡脚本
- 在将每个 HTML 元素附加到 AngularJS 中的 DOM 之前对其进行预处理
- 了解矩阵的基础知识
- 如何在 angularjs 中访问预处理