JavaScript动态创建script标签并执行js代码
实际应用中,可能需要动态的创建一个script标签,然后将js代码添加到标签中,并执行。
下面就通过代码实例介绍一下如何实现此功能。
代码实例如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.pipipi.net/" /> <title>前端教程网</title> <script> function loadScriptString(code){ var script=document.createElement("script"); script.type="text/javascript"; try{ //IE浏览器认为script是特殊元素,不能再访问子节点;报错; script.appendChild(document.createTextNode(code)); } catch(ex){ script.text=code; } document.getElementsByTagName('head')[0].appendChild(script); } window.onload=function(){ var obt=document.getElementById("bt"); var str="var odiv=document.getElementById('show');" str=str+"odiv.innerHTML='前端教程网欢迎您'" obt.onclick=function(){ loadScriptString(str); } } </script> </head> <body> <div id="show"></div> <input type="button" id="bt" value="查看效果"/> </body> </html>
上面的代码实现了我们的要求,下面介绍一下它的实现过程。
一.代码注释:
(1).function loadScriptString(code){},参数是script标签中的代码。
(2).var script=document.createElement("script"),创建一个script标签元素。
(3).script.type="text/javascrip,设置标签的type属性。
(4).try{
script.appendChild(document.createTextNode(code));
},IE9以下浏览器认为script是特殊元素,不能再访问子节点报错。
(5).catch(ex){
script.text=code;
},IE9以下浏览器使用text属性。
(6).document.getElementsByTagName('head')[0].appendChild(script),将script追加到head。
二.相关阅读:
(1).document.createElement()参阅document.createElement()一章节。
(2).getElementsByTagName()参阅document.getElementsByTagName()一章节。
(3).appendChild()参阅JavaScript appendChild()一章节。
(4).createTextNode()参阅document.createTextNode()一章节。
(5).try catch参阅JavaScript try catch一章节。