1. 程式人生 > 實用技巧 >JavaScript學習筆記1:JavaScript學前介紹

JavaScript學習筆記1:JavaScript學前介紹

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

主要根據圖書《JavaScript高階程式設計(第3版)
1、JavaScript是一種專門與網頁互動而設計的指令碼語言,由下列三個不同的部分組成: 1)ECMAScript,由ECMA-262定義,提供核心語言功能; 2)文件物件模型(DOM) ,提供訪問和操作網頁內容的方法和介面; 3)瀏覽器物件模型(BOM),提供與瀏覽器互動的方法和介面。
現狀: JavaScript 的這三個組成部分,在當前5個主要瀏覽器(IE, Firefox, Chrome, Safari 和Opera)中都得到了不同程度的支援。其中,所有瀏覽器對 ECMAScript 第 3 版的支援大體上都還不錯,而對ECMAScript 5 的支援程度越來越高
,但對DOM的支援則彼此相差比較多。對已經納入 HTML5 標準的 BOM 來說,儘管各瀏覽器都實現了某些眾所周知的共同特性,但其他特性還是會因瀏覽器而異


2、在HTML中使用JavaScript 1)在HTML頁面中執行JS的3中方法 嵌入執行(2種方法): <body> <a href="javascript:alert('執行JavaScript!');">執行 JavaScript</a> <script type="text/javascript"> alert("直接執行的JavaScript!");
</script> </body>
匯入外部js檔案: <script src="test.js"type="text/javascript"></script> 這個時候標籤內就不要再嵌入JS程式碼, 匯入外部JS的時候,嵌入的程式碼會被忽略
3、需要注意的 把JavaScript插入到HTML頁面中要使用<script >元素。使用這個元素可以把JavaScript嵌入到頁面中,也可以包含外部JS檔案。 1)包含外部JavaScript檔案時,必須將src屬性設定為指向響應檔案的URL。而這個檔案可以是與它的頁面位於同一伺服器的檔案,也可以是其他任何域中的檔案
2)所有<script>元素都會按照它們在頁面中出現的先後順序依次被解析。在不適用 defer 和async 屬性的情況下,只有在解析完前面<script>元素中的程式碼之後,才會開始解析後面<script>元素中的程式碼。 3)由於瀏覽器會先解析完不適用defer 屬性的<script>元素中的程式碼,然後再解析後面的內容,所以一般應該吧<script>元素放在頁面最後,即主要內容後面,</body>標籤前面 4)使用defer屬性可以讓指令碼在文件完全呈現後再執行。延遲指令碼總是按照指定它們的順序執行 5)使用async屬性可以表示當前指令碼不必等待其他指令碼,也不必阻塞文件呈現。不能保證非同步指令碼按照它們在頁面中出現的順序執行 另外, 使用<noscript>元素可以指定在不支援指令碼的瀏覽器中顯示的替代內容。但在啟用了指令碼的情況下,瀏覽器不會顯示<noscript>元素中的任何內容。
4、<script>元素 HTML4.01為<script>定義了6個屬性,全是可選,language已廢棄 1)type :考慮到約定俗成和最大限度的瀏覽器相容性,還是text/javascript 。其實標準來說有好幾個其他值 2)src :表示包含要執行程式碼的外部檔案 3)charset:表示通過src屬性指定的程式碼的字符集。由於大多數瀏覽器會忽略它的值。 4)language:已廢棄,原來用於標識編寫程式碼使用的指令碼語言(如JavaScript、JavaScript1.2、VBScript) 5)defer:表示指令碼可以延遲到文件完全被解析和顯示之後再執行,只對外部指令碼檔案有效。 6)async:可選,表示應該立即下載指令碼,但不應妨礙頁面中的其他操作,如下載其他資源或等待載入指令碼。支隊外部指令碼有效。
注意1: 在<script>嵌入JS程式碼是,不要在程式碼中的任何地方出現"</script>"字串,瀏覽器載入時會產生錯誤,會認為那是結束的</script>標籤,如下文: <script type="text/javascript"> function sayScript(){ alert("</script>"); } </script>

但是通過轉義字元"\"可以解決這個問題 <script type="text/javascript"> function sayScript(){ alert("<\/script>"); } </script>
注意2
XHMTL可以容忍省略</script>,但HTML文件不行。
5、 XHTML程式碼的規則 比HTML嚴格得多,如 1)< 和> 直接a < b 會報錯,要改寫成實體編碼&lt; 還可以 2)用 <![CDATA[...這裡是不需要的任意格式的文字內容...]]> 語法包裹內容 。有時候還配合註釋使用 //<![CDATA[ ...這裡是不需要的任意格式的文字內容... //]]> 3)在XHTML格式中,要把defer屬性設定為 defer="defer" ,async也一樣
6、<noscript>元素 當瀏覽器不支援JavaScript時,如何讓頁面平穩退化。
<!DOCTYPE html> <html> <head> <title>ceshi</title> </head> <body> <noscript> <p>本頁面需要瀏覽器支援(啟用)Javascript</p> </noscript> </body> </html>
不推薦使用的(為了讓不支援 <script> 標籤的瀏覽器能隱藏嵌入的JavaScript程式碼: <script><!-- alert("Hi"); //--></script>
Chrome測試程式碼:
<!DOCTYPE html> <html> <head> <title>ceshi</title> </head> <body> <noscript> <p>本頁面需要瀏覽器支援(啟用)Javascript</p> </noscript> <script><!-- alert("Hi"); //--></script> </body> </html>

正常時:

禁用當前頁面JS後:

7、文件模式 從IE5.5開始,引入了“文件模式”的概念,這個概念是通過使用文件型別(doctype)切換來實現的,後來其他瀏覽器也紛紛效仿。 最初的兩週文件模式是:混雜模式、標準模式。混雜模式讓IE的行為與(包含非標準特性的)IE5相同,而標準模式則讓IE的行為更接近標準行為。 這兩種模式主要影響CSS的呈現,也會影響JS的解釋執行。現階段,開發前端程式碼,宣告文件模式,讓瀏覽器以適當的模式去解析,是有必要的。 詳情參見: http://www.w3school.com.cn/tags/tag_doctype.asp <!DOCTYPE> 宣告 Web 世界中存在許多不同的文件。只有瞭解文件的型別,瀏覽器才能正確地顯示文件。 HTML 也有多個不同的版本,只有完全明白頁面中使用的確切 HTML 版本,瀏覽器才能完全正確地顯示出 HTML 頁面。這就是 <!DOCTYPE> 的用處。 <!DOCTYPE> 不是 HTML 標籤。它為瀏覽器提供一項資訊(宣告),即 HTML 是用什麼版本編寫的。

轉載於:https://my.oschina.net/bluefly/blog/478575