JavaScript動態建立script標籤並執行js程式碼

antzone發表於2017-04-06

實際應用中,可能需要動態的建立一個script標籤,然後將js程式碼新增到標籤中,並執行。

下面就通過程式碼例項介紹一下如何實現此功能。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<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一章節。

相關文章