HTML中呼叫JavaScript的幾種情況和規範寫法
JavaScript執行在html中,引用有幾種方式?
我知道的方法有3種:
第一種:外部引用遠端JavaScript檔案。如<script type="text/javascript" src="../js/jquery-1.8.3.js"></script>(相對路勁)或者是<script src="http://common.cnblogs.com/script/jquery.js" type="text/javascript"></script>(絕對路勁);
另外一種:直接用寫在頁面上,如:
1 2 3 4 5 |
"text/javascript" >
|
第三種:在JavaScript程式碼中引用外部js:
1 2 3 4 5 6 7 8 |
, "text/javascript" );
|
2.JavaScript通常寫在頁面的什麼位置?
javascript的書寫位置大致有3個地方:
第一個地方:是head頭部,比方:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
第二個地方:body的不論什麼位置,如:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
第三個地方:以事件的形式寫在標籤上,如:
1 |
|
3.改變js載入順序的方法有什麼?
JavaScript是有載入順序的,不同的載入順序能夠會導致不同的結果,舉個栗子:
1 2 3 4 5 6 7 8 9 10 11 |
|
第一段js執行會出錯,由於html程式碼執行是至上而下載入的,第一段JavaScript程式碼先執行,才執行以下的html程式碼,所以根本就找不到該DOM節點,就會報錯,假設html先執行,在執行JavaScript程式碼,就像第二段,就能夠執行成功!當然,我不是說一定要先執行html程式碼。在執行JavaScript程式碼。這個要依情況而定。
再舉一個栗子:
1 2 3 4 |
|
上面的fancybox外掛假設像上面這種載入順序去載入的話。一定是不能執行的。由於程式碼執行所依賴的js庫是後面執行的,這裡要講的內容主要是想說明,假設是在使用一個外掛。依賴某個js檔案。一定要在前面先執行。無論是放在head頭部,還是body中。
上面的樣例說明一點。不同的js執行順序,執行的內容是不一樣的。所以改變js檔案的位置。就能夠改變js的載入順序(注:這裡指的是單獨的JavaScript檔案或片段。不包括函式的順序)。
2015.11.05補充:感謝@橘色大耳朵貓 同學的提醒,這裡的js的載入順序指的是js檔案在頁面上的載入順序,不是js程式的載入順序,先理解這一點。假設說行內js事件程式碼也算是一個獨立的js檔案的話(也能夠這麼理解。畢竟能夠獨立執行),那這裡的載入順序也是自上而下的,和其它的檔案的載入順序是一樣的,可是有一個很特殊的事件例外。那就是“onload”事件,onload 事件會在頁面或影象載入完畢後馬上發生(w3school上的解釋),好難理解。通俗的講就是,這個事件是在頁面上的所以內容載入完畢了。我才來執行這個函式。無論我這個時間定義在哪裡都一樣。沒有順序而言(本來嘛,我反正都是最後一個執行的,位置對於我來說已經沒有意義了);除了onload,其它的事件都是依照順序執行的。
可能有人會問了,唉,不正確啊,假設我是onclick事件,我點選之後。可能下一行執行的函式在我事件的前面呢,這不是改變了js執行的順序嗎?這怎麼解釋呢?
假設你還是有這個疑惑,那請注意我在上一句描寫敘述上說的是“改變了js的執行順序”,是執行順序,不是載入順序。執行順序是程式內,載入順序是檔案之間的,比方說點選事件,你點選了。那js就已經經歷了載入,然後運行了,假設你還是不理解,我就給你舉一個現實生活中的樣例:
我手上有4個盒子。盒子裡面有不同的東西,每一個盒子都有編號(1,2,3,4),如今我把這4個盒子依次在桌子上,編號順序隨機,然後從左到右依次看一遍,盒子是開的,我就把東西拿出來(這裡表示js自己主動執行)。假設是關著的,就看下一個(這裡表示是須要事件來出發的。如開啟盒子這個動作),直到最後一個盒子看完,整個就完了。那盒子的順序就是檢視盒子的順序,跟編號沒關係(這裡說的是檔案的名字),onclick這種事件就是盒子我已經過了一遍,如今有沒有開啟的盒子。我如今打開了。就是運行了這個事件。然而前面我們說了,盒子已經過了一遍,所以這個動作就不涉及整個過場順序問題了。那onload是怎麼回事呢,就是我有一個盒子放在一邊,等其它盒子都看了,再看這個盒子(就是最後執行這個事件,onload是自己主動觸發執行的),理解了嗎?自己擺一擺。要是還不理解,那就去面壁思考吧!
4.type屬性都有哪些經常使用的值?代表什麼意思?
開啟Dreamweaver(我比較喜歡用這個編輯器,習慣了他給的提示。別說我low哦),在<script>上打一個type,會有非常多type屬性,我們把他寫下來。看看都有哪些:
application/ecmascript application/javascript application/x-ecmascript application/x-javascript text/ecmascript text/javascript text/jscript text/livescript text/tcl text/x-ecmascript text/x-javascript
oh。mygod!
這麼多!嚇死寶寶了!
在<link>上面打一下:
text/css text/javascript
還好僅僅有2個!
type屬性在js上表示指令碼的型別,即MIME型別,在link上表示疊層樣式表的MIME型別,經常使用的就是2種(其它的不經常使用,也不知道是什麼意思。用在什麼情況。哪位大神幫忙科普一下):
text/css (css文字。告訴瀏覽器是載入css樣式)
text/javascript (JavaScript文字。告訴瀏覽器載入js程式碼)
貌似解釋的有點牽強,呵呵!
5.除了type屬性還有其它的什麼屬性?
再次開啟Dreamweaver,給的提示有這幾個:async,defer,language,runat。src
async:定義指令碼是否非同步執行。值為:async;
defer:指示指令碼不會生成不論什麼文件內容。瀏覽器可繼續解析並繪製頁面。意思就是等文件載入完成了再執行此js,要是想深入瞭解這個屬性,能夠參考這裡。假設你英文比較好,能夠看這裡。
language:規定指令碼的語言。如今使用type來替代了;
runat:其值為server。表示是在伺服器上執行此程式碼。client不執行,不經常使用;
src:指外部指令碼檔案的引用路徑
6.js中經常使用的輸出方式?
js的輸出方式大概有以下幾種:
1 2 3 4 5 6 7 8 9 |
alert( "誰家能叫我吃飯啊!
|