第一種方式——編碼統一
我們以前覺得出現亂碼的原因是因為編碼不統一,就是因為我們設定編碼統一之後,就解決了問題,所以,讓html和js的編碼統一,是最簡單的乙個亂碼解決方式,原因是什麼,是因為,如果你在載入js的時候,並沒有宣告js的編碼格式,那麼瀏覽器會預設的按照當前html的編碼格式進行解析引入的js檔案,如果你的js和本身頁面編碼不一樣,並且js中引入了中文字元,那麼肯定會出現亂碼的。要知道,程式都是笨笨的。
第二種方式——在引入js的標籤中加入charset屬性
這樣引入,那麼這個xx.js就會以本身頁面的編碼進行解析,而如果兩個的編碼不一樣,如果這個js是gbk的編碼,那麼我們可以這樣寫
那麼,只要是保證這個js檔案的確是gbk或者對應的,你自己寫的編碼,那麼無論在哪種編碼的頁面中引用這個js,都不會出現編碼問題,這樣寫才是最規範的,第一種方式會出現一種情況,就是有很少情況下,由於一些不規範的原因,我們會發現即使是編碼統一的時候,也會出現亂碼,那麼我們最好就是用第二種方式來寫。
第三種方式——用伺服器語言宣告header頭資訊
這種方式是比較少見的一種方式,適合某些特定的情況。編碼資訊都是在頭資訊中宣告的。而js本身並沒有像html mate標籤這樣的宣告頭資訊的標籤,所以要借助伺服器語言,我是學php的,其header(「content-type:text/html;charset=gb2312″);就可以宣告頭資訊,而如何寫這個js,就是把js內容寫在php檔案中,這裡就有乙個知識點,就是js檔案並不一定非寫在js為字尾的檔案中,其實可以寫的伺服器檔案(php檔案等)中,php以<? ?>來包括服務端解析的**,而之外的或者echo輸出的**都會傳送到客戶端,所以,我們將js**寫到<??>外部或者直接echo出來,那麼這個js**同樣可以起作用,這就是我們會發現,我們很多介面等程式,明明是script標籤,引入的卻是乙個php檔案,或者其他的服務端檔案,就是這個道理,這樣來做,就更加的靈活了,因為我們可以借助服務端語言,進行讀取資料庫等等更為複雜的操作,讓這個js**更加多樣也更加靈活,實現更加複雜的功能,比如我們
在這個xx.php寫23
4<?
$ip=getenv('remote_addr');
echo"alert($ip);";
?>
這樣我們訪問這個html頁面,就會彈出ip位址,我們就可以對他進行其他操作等。當然,既然是連線服務端檔案,就不能是直接雙擊開啟這個html了,一定是通過瀏覽器訪問才可以,或者是連線這個php檔案的src要寫http形式,目的就是保證這個php檔案要是通過伺服器解析訪問的,如果你這樣寫相對目錄的形式連線php,你直接開啟html,就相當於直接開啟了這個php檔案,而不是通過http訪問的,這個php是不能被解析的。講的複雜了,但是這是乙個很重要的知識點。如果單從亂碼而言,這種引用js檔案的方式適合我們已經引用了,不能再修改這個引用檔案了,比如我們在一些外鏈站發了文章,不能再修改了,那麼,我們可以修改連線的我們**上的這個js檔案,當前前提是,連線的是服務端檔案,我們就可以通過這樣的方式解決。
JS非同步載入的三種方式 js載入
一 同步載入 我們平時使用的最多的一種方式。同步模式,又稱阻塞模式,會阻止瀏覽器的後續處理,停止後續的解析,只有當當前載入完成,才能進行下一步操作。所以預設同步執行才是安全的。但這樣如果js中有輸出document內容 修改dom 重定向等行為,就會造成頁面堵塞。所以一般建議把 firefox 3....
JS非同步載入的三種方式
我們平時使用的最多的一種方式。同步模式,又稱阻塞模式,會阻止瀏覽器的後續處理,停止後續的解析,只有當當前載入完成,才能進行下一步操作。所以預設同步執行才是安全的。但這樣如果js中有輸出document內容 修改dom 重定向等行為,就會造成頁面堵塞。所以一般建議把 firefox 3.6 opera...
JS非同步載入的三種方式
我們平時使用的最多的一種方式。同步模式,又稱阻塞模式,會阻止瀏覽器的後續處理,停止後續的解析,只有當當前載入完成,才能進行下一步操作。所以預設同步執行才是安全的。但這樣如果js中有輸出document內容 修改dom 重定向等行為,就會造成頁面堵塞。所以一般建議把 firefox 3.6 opera...