Javascript應(yīng)用-Js在頁面中被引入的幾種方法
首先得了解有幾種方法能把javaScript加入到頁面中? 常見下述的前2種,其實還有更多。
1.頁面中直接引入外部js文件:
2.頁面中直接寫入 js片段:
3.在js中引入js文件(比較少用): document.write("");
注意:這時候".."必須拆成"",否則瀏覽器可能會把父js片段關(guān)閉掉,出錯;
4.同樣在js中引用其他js片段,document.write("");
你可能覺得這個并沒有必要,既然已經(jīng)在script中了還套一層干嘛?呵呵,怎么說也是一種寫法,而且它具有其特殊的行為,稍后我們討論到。
5.使用Ajax中的xmlHttpRequest結(jié)合eval()來引入js,我最早在Dojo的代碼見到,寫的詳細些:
- var ajaxRequest = getXmlHttpRequest()//省去各個瀏覽器得到xmlHttpRequest的部門
- ajaxRequest.open("GET","my.js",false);//使用xmlHttpRequest對象Get方法的同步調(diào)用
- ajaxRequest.send(null);
- sJsFragment = ajax.responseText;//得到字符串為js片段
- eval(sJsFragment);//執(zhí)行js片段
注意:這里要求my.js即后來的sJsFragment內(nèi)容得是非常規(guī)范的js,且沒有//開頭的注釋,怎樣檢查js是否規(guī)范呢?去http://jslint.com/
6.無所不能的Dom方法,非常好用:
- var oScript = document.createElement("script");//創(chuàng)建一個Script元素
- oScript.src = "my.js";//制定src屬性
- document.getElementsByTagName("head")[0].appendChild(oScript);
說明:my.js的內(nèi)容會在oScript加入到文檔中之后獲得并執(zhí)行。仔細看下這段容易發(fā)現(xiàn)這個調(diào)用是異步的,可以在文檔載入之后通過事件觸發(fā),我用它變通了一下,作為了xmlHttpRequest的Get方法在跨域取數(shù)時的替代,獲得了很完美的效果,以后有機會專門寫篇文。
六種不少吧,可能還會有吧,而且這幾種之間還可能相互嵌套,變化無常。
其中1、2、4、6種方式引入的javaScript的執(zhí)行順序是非常自然的,隨著頁面的載入以及后續(xù)的事件觸發(fā),它們遵守先來后到、而其內(nèi)部自上而下。