天天看點

Javascript----第二章(在HTML中使用JavaScript)

筆記:

一,<script>元素

1.  HTML4.01曾為<script>定義了下列六個屬性:

1)async:(可選)表示應該立即下載下傳腳本,但不應妨礙頁面中的其他操作,比如下載下傳其他資源或等待加載其他腳本。隻對外部腳本檔案有效。

2)src:(可選)表示包含要執行代碼的外部檔案。

3)charset:(可選)表示通過src屬性指定的代碼的字元集。由于大多數浏覽器會忽略它的值,是以這個屬性很少有人用。

4)defer:(可選)表示腳本可以延遲到文檔完全被解析顯示之後再執行。隻對外部腳本檔案有效。

5)language(已廢棄)用于表示編寫代碼使用的腳本語言。

6)type:(可選)可以看作是language的替代屬性:表示編寫代碼使用的腳本語言的内容類型(也稱MIME類型)。

2. 使用<script>元素的方式有兩種:直接在頁面中頁面中嵌入JavaScript代碼和包含外部JavaScript檔案。

3. 在使用<script>元素嵌入JavaScript時,隻須為<script>指定type屬性。然後把JavaScript代碼直接放在元素内部即可。如下例:

<script type="text/javascript">//此為type屬性的一個預設值
      function  sayScript(){
         alert("Hi!");
       /*  alert("</script>");   代碼中不能出現"</script>"字元串,否則為錯誤;
           alert("<\/script>");    若遇到可通過轉義字元"\"解決這個問題。alert為輸出的意思  */
      }
</script>
           

4.如果要通過<script>元素來包含外部JavaScript檔案,那麼src屬性是必需的。其屬性值是一個指向外部JavaScript檔案的連結,例:

<script type>="text/javascript"  src="example.js">
</script>
           

這樣,外部檔案example.js将被加載到目前頁面中。

注意:帶有src屬性的<script>元素不應該在其<script>和</script>标簽之間再包含額外的JavaScript代碼。如果包含,則隻會下載下傳并執行外部腳本檔案,嵌入的代碼會被忽略。

5.标簽位置:所有<script>元素都應該放在頁面的<head>元素中。例:

<!DOCTYPE html>
<html>
   <head>
      <title>Example HTML Page</title>
      <script type="text/javascript" src="example1.js"></script>
      <script type="text/jaavascript" src="example2.js"></script>
   </head>
   <body>
   <!--這裡放頁面内容-->
   </body>
</html>
           

這樣處理意味着等到全部JavaScript代碼都被下載下傳,解析和執行完成以後才能開始呈現頁面的内容。

<!DOCTYPE html>
<html>
   <head>
      <title>Example HTML Page</title>
   </head>
   <body>
   <!--這裡放頁面内容-->
      <script type="text/javascript" src="example1.js"></script>
      <script type="text/jaavascript" src="example2.js"></script>
   </body>
</html>
           

這樣處理,在解析包含的JavaScript代碼之前,頁面的内容将完全呈現在浏覽器中。

6.延遲腳本:

defer屬性用途是表明腳本在執行時不會影響頁面的構造。也就是說,腳本會被延遲到整個頁面都解析完畢後再運作。

<!DOCTYPE html>
<html>
   <head>
      <title>Example HTML Page</title>
      <script type="text/javascript" defer="defer" src="example1.js"></script>
      <script type="text/jaavascript" defer="defer" src="example2.js"></script>
   </head>
   <body>
   <!--這裡放頁面内容-->
   </body>
</html>
           

注:把延遲腳本放在頁面底部是最佳選擇。在XHTML文檔中,要把defer屬性設定為defer="defer".

7.異步腳本:

async屬性告訴浏覽器立即下載下傳檔案,,且标記為async的腳本并不保證按照指定它們的先後順序執行。

<!DOCTYPE html>
<html>
   <head>
      <title>Example HTML Page</title>
      <script type="text/javascript" async src="example1.js"></script>
      <script type="text/jaavascript" async src="example2.js"></script>
   </head>
   <body>
   <!--這裡放頁面内容-->
   </body>
</html>
           

在以上代碼中,第二個腳本檔案可能會在第一個腳本檔案之前執行。指定async屬性的目的是不讓頁面等待兩個腳本下載下傳和執行,進而異步加載頁面其他内容。在XHTML文檔中,要把async屬性設定為async="async".

二,嵌入代碼和外部檔案:

在HTML中嵌入JavaScript代碼雖然沒有問題,但一般認為最好的做法還是盡可能使用外部檔案來包含JavaScript代碼。有以下幾個優點:

1,可維護性:可以把所有JS檔案放在一個檔案夾中,可以輕松維護,并且開發人員能在不觸及HTML标記的情況下,集中精力編輯JS代碼。

2,可緩存:浏覽器能根據具體的設定緩存連結的所有外部檔案。即如果有兩個頁面都使用同一個檔案,那麼這個檔案隻需下載下傳一次。則能加快頁面加載的速度。

3,适應未來!!

三,<noscript>元素

當浏覽器不支援JS時可以創造一個<noscript>元素讓頁面平穩的退化,其元素用以在不支援JS的浏覽器中顯示替代的内容。這個元素可以包含能夠出現在文檔<body>中的任何HTML元素——<script>元素除外。

包含在<noscript>元素中的内容隻有在下列情況下才會顯示出來:

1)浏覽器不支援腳本;

2)浏覽器支援腳本,但腳本被禁用。

例:

<!DOCTYPE html>
<html>
   <head>
      <title>Example HTML Page</title>
      <script type="text/javascript" defer="defer" src="example1.js"></script>
      <script type="text/jaavascript" defer="defer" src="example2.js"></script>
   </head>
   <body>
   <!--這裡放頁面内容-->
    <noscript>
      <p>本頁面需要浏覽器支援(啟用)JavaScript。</p>
    </noscript>
   </body>
</html>
           

這個頁面會在腳本無效的情況下向使用者顯示一條消息,而在啟用了腳本的浏覽器中,使用者永遠也不會看到它——盡管它是頁面的一部分。

繼續閱讀