1. java是在服務器端運行的代碼,jsp在服務器的servlet里運行,而javascript和html都是在瀏覽器端運行的代碼。所以加載執(zhí)行順序是是java>jsp>js。
2. js在jsp中的加載順序
頁面上的js代碼時html代碼的一部分,所以頁面加載的時候是由上而下加載。所以js加載的順序也就是頁面中script>標簽出現(xiàn)的順序。script>標簽里面的或者是引入的外部js文件的執(zhí)行順序都是其語句出現(xiàn)的順序,其中js執(zhí)行的過程也是頁面裝載的一部分。
2.1 在js腳本中定義的全局變量和函數(shù),都可以在后面的腳本中調(diào)用。變量的調(diào)用,必須是前面已經(jīng)聲明了的,否則變量返回的值是undefined。同一段腳本中,函數(shù)定義可以出現(xiàn)在函數(shù)的調(diào)用后面;若函數(shù)的定義和調(diào)用在兩個腳本段中,函數(shù)調(diào)用在函數(shù)定義之前就會報函數(shù)未定義錯誤。
2.2 js中出現(xiàn)ajax的異步加載
由于ajax的異步加載可能會導致語句的執(zhí)行順序并不是按照語句的出現(xiàn)順序來執(zhí)行。下面以我做任務時遇到的問題為例:
在頁面初始加載的時候需要向jsp發(fā)送請求來獲得該頁面所需的數(shù)據(jù),在ajax成功函數(shù)中,對data的操作所需時間過長,就會導致在ajax函數(shù)外面的confirm與loadTree比data操作后面的語句先執(zhí)行。最終在loadTree中使用data的值得時候就為空,此時全局變量openTab_Id就為空。
2.3控制js執(zhí)行順序
可以使用setTimeout(function(),time);來使function延遲加載。
您可能感興趣的文章:- 如何讓頁面加載完成后執(zhí)行js
- 多種方法實現(xiàn)當jsp頁面完全加載完成后執(zhí)行一個js函數(shù)
- 解析頁面加載與js函數(shù)的執(zhí)行 onload or ready
- 解決用jquery load加載頁面到div時,不執(zhí)行頁面js的問題
- 頁面加載完成后再執(zhí)行JS的jquery寫法以及區(qū)別說明
- 頁面加載完后自動執(zhí)行一個方法的js代碼
- jsp的注釋可能會影響頁面加載速度讓代碼扔繼續(xù)執(zhí)行
- JS實現(xiàn)文檔加載完成后執(zhí)行代碼