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一章节。

回复

我来回复
  • 暂无回复内容