首先,明白一件事,如果你定義乙個js函式,如果它不可以使用,只有兩種可能。
第一種:你在jsp頁面的引入出錯,引入順序的問題。
第二種:就是作用域出現了問題。
還要知道的是,什麼時間你寫的js會載入進來。
testali1()這個方法會在文件載入的過程中載入進來,也就是說文件從上往下執行,執行到它的時間會自動載入進來。
而如果寫在ready方法裡面,會在文件全部載入進來以後,再去載入這些東西。
所以說寫在裡面的安全性更加高一些。
但是,它一定會引發新的問題,testali1()這個方法是乙個全域性的方法,你不管在哪呼叫都行。
testali2()這個方法是乙個絕對的內部方法,你只可能在ready這乙個方法裡面呼叫,在其它地方呼叫是不可能的。
如果你想要這裡面的方法在任何地方都可以呼叫,就要加上像這種命名空間一樣的東西,加上後裡面的testali3()方法就可以呼叫
了,而且呼叫的規則是chen.testali3()。如果說你感覺這樣寫怕麻煩也可以直接在裡面寫上window.testali3(),這其實就相當於是說明它是乙個全域性的東西。
例子:
(1)測試1
(2)測試2
(3)測試3
(1)可正常呼叫 (2)報錯 testali2 not defined (3)正常呼叫
如果兩種情況都試之後 ,還是不行,就只有最後一種情況了,就是命名衝突,你可以把命名空間或者方法這些東西給改乙個名字,試一下。十分重要。
所以js裡面的不能執行的問題,就是你載入順序寫錯了,這點可以一點一點的測試,十分重要。
還有就是可以呼叫了內部作用域裡面的方法。
附:在用jquery的時候避免不了ready函式的使用,其實這個ready函式的作用不僅僅是在文件載入完畢後再進行相應js指令碼的載入,以保證一些元素在js指令碼使用以前就已經在html文件中存在了(避免一些報錯)。其實ready函式還有乙個作用就是實際上ready函式無形中已經形成了乙個內部域,這個內部域裡的函式的對外是不可見的。但是如果想要ready作用域裡定義的函式也可以被外部呼叫,只要這麼設定就搞定了:
window.funname=function();
跨域訪問及Nginx解決跨域訪問
同源策略 sameorigin policy 是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。可以說web是構建在同源策略基礎之上的,瀏覽器只是針對同源策略的一種實現。同源策略是處於對使用者安全的考慮,如果非同源就會受到以下限制 但是事實是經常...
跨域訪問Jquery實現
跨域訪問 js實現。環境 net3.5 jquery json.net 因為在跨域實現,所以這裡新建 這個 只需要 1 customer 類public class customer public string customername public string memo public strin...
python列表元素的訪問及常用方法
建立列表只有可以使用 整數 作為下標來訪問其中的元素,與c語言陣列類似,0表示第乙個元素 1表示第二個元素 2表示第三個元素以此類推 列表還指出使用負整數作為下標,其中,1表示最後乙個元素 2表示倒數第二個元素以此類推 方法說明 將x追加至列表尾部 extend l 將列表l中所有元素追加至列表尾部...