一.jsp頁面中的代碼執行加載順序介紹 javascript
1. java是在服務器端運行的代碼,jsp在服務器的servlet裏運行,而javascript和html都是在瀏覽器端運行的代碼。因此加載執行順序是是java>jsp>js。 html
2. js在jsp中的加載順序 java
頁面上的js代碼是html代碼的一部分,因此頁面加載的時候是由上而下加載。因此js加載的順序也就是頁面中<script>標籤出現的順序。<script>標籤裏面的或者是引入的外部js文件的執行順序都是其語句出現的順序,其中js執行的過程也是頁面裝載的一部分。 jquery
2.1 在js腳本中定義的全局變量和函數,均可以在後面的腳本中調用。變量的調用,必須是前面已經聲明瞭的,不然變量返回的值是undefined。同一段腳本中,函數定義能夠出如今函數的調用後面;若函數的定義和調用在兩個腳本段中,函數調用在函數定義以前就會報函數未定義錯誤。 ajax
2.2 js中出現ajax的異步加載 瀏覽器
因爲ajax的異步加載可能會致使語句的執行順序並非按照語句的出現順序來執行。下面以我作任務時遇到的問題爲例: 服務器
在頁面初始加載的時候須要向jsp發送請求來得到該頁面所需的數據,在ajax成功函數中,對data的操做所需時間過長,就會致使在ajax函數外面的confirm與loadTree比data操做後面的語句先執行。最終在loadTree中使用data的值得時候就爲空,此時全局變量openTab_Id就爲空。 異步
二.關於JS和html代碼的執行前後有關問題 jsp
關於JS和html代碼的執行前後問題 函數
JS代碼能夠在html代碼的<head>和<body>裏面引用,因此按照解析html代碼的前後順序來決定JS的執行的前後順序,能夠看下面的一段代碼來驗證:
1.在<head>裏面的JS誰先被引用,誰就優先執行,在本例中外部引用的JS第一個執行。緊接着下面的一個<script>「最早實行」代碼執行。
2.在<body>裏面的JS要比<head>裏面的JS後執行,由於html代碼是先執行<head>再執行<body>的,緊接着執行「中間執行1」,而後頁面上執行html代碼「This is my JSP page. 」,在按照順序執行「中間執行2」的JS代碼。
3.最後頁面所有加在完成以後,就是從<head>一直到<body>所有執行完,出發頁面加載完成函數onload(),而後處罰「最後執行」JS。
4.若是引入jquery以後,在$(document).ready(function(){。。。})裏面的腳本是在頁面全部的html所有加載完成以後再執行。
5.關於CSS樣式,直接在標籤後面style引用效果最強,在head裏面定義的樣式引用效果次之,在head裏面引用外部的樣式效果最弱,用JS改寫的樣式,通常比直接引用的樣式要強。
<head>
<script type="text/javascript" src="temp.js"$amp;>amp;$lt;/script>
<script type="text/javascript">
alert("最早執行");
</script>
</head>
<body onload="alert('最後執行');">
<script type="text/javascript">
alert("中間執行1");
</script>
This is my JSP page. <br>
<script type="text/javascript">
alert("中間執行2");
</script> </body>