动态创建js脚本有两种方式:
1.插入外部js文件
2.插入js代码片段
动态插入js外部文件的方法:
function loadScript(url){
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
document.body.appendChild(script);
}
loadScript('test.js');
动态加载js代码片段
function loadJsCode(code){
var script = document.createElement('script');
script.type = 'text/javascript';
//for Chrome Firefox Opera Safari
script.appendChild(document.createTextNode(code));
//for IE
//script.text = code;
document.body.appendChild(script);
}
loadJsCode('alert(2)');
IE中<script>标签被视为一个特殊标签,不能访问其子元素,所以要使用script.text方法,同时为了兼容Safari早起版本,兼容代码如下:
function loadJsCode(code){
var script = document.createElement('script');
script.type = 'text/javascript';
try{
//for Chrome Firefox Opera Safari
script.appendChild(document.createTextNode(code));
}catch(ex){
//for IE
script.text = code;
}
document.body.appendChild(script);
}
loadJsCode('alert(3)');
以这种方式加载的js片段会在全局环境中执行,实际上这种方式与将字符串传给eval()执行时一样的。