【讀書筆記】JavaScript高級編程(一)

書中第2章,在HTML中使用JavaScript摘要總結 javascript

2.1 <script>元素 html

<script>中的5個屬性:
charset:可選。表示經過src屬性指定的代碼的字符集。多數瀏覽器會忽略它的值,不多人使用。
defer:可選。表示腳本能夠延遲到文檔徹底被解析和顯示以後再執行。IE和Firefox3.1是目前惟一支持defer屬性的主流瀏覽器。其餘瀏覽器則會忽略,不延遲腳本的執行。
language:已廢棄。原來用於表示編寫代碼使用的腳本語言(如JavaScript、JavaScript1.2或VBScript)。
src:可選。表示包含要執行代碼的外部文件。
type:必需。表示編寫代碼使用的腳本語言的內容類型(也稱爲MIME類型)。一般爲text/javascript。 java

包含在<script>元素內的JavaScript代碼將被從上至下依次解釋。在解釋器對<script>元素內部的全部代碼求值完成之前,頁面中的其他內容都不會被瀏覽器加載或顯示。 瀏覽器

在使用<script>嵌入JavaScript代碼時,任何地方不能出現"<script>"字符串。
<script type="text/javascript">
    function sayScript(){
        alert("</script>");  //此處會報錯
    }
</script>
可將"</script>"分開寫,避免錯誤。
<script type="text/javascript">
    function sayScript(){
        alert("</scr" + "ipt>"); 
    }
</script> less

src屬性能夠指向當前HTML頁面所在域以外的某個域中的URL,例如
<script type="text/javascript" src="http://www.somewhere.com/afile.js"></script>
spa

2.1.1 標籤的位置 設計

按照慣例,全部的<script>元素都應該放在頁面的<head>元素中,但是,這將意味着必須等到所有JavaScript代碼都被下載、解析和執行完成之後,才能呈現頁面內容(瀏覽器在遇到<body>標籤時纔開始呈現內容)。對於須要不少JavaScript代碼的頁面來講,會致使呈現頁面時出現的延遲現象。爲了不這種現象發生,能夠把所有JavaScript引用發在頁面的內容後面或增長defer屬性,以下例所示:
<html>
    <head>
        <title>Example HTML Page</title>
    </head>
    <body>
        <!-- 這裏放內容 -->
        <script type="text/javascript" src="example1.js"></script>
        <script type="text/javascript" src="example2.js"></script>
    </body>
</html>
htm

2.1.3 在XHTML中的用法 ip

某些JavaScript代碼在HTML中是有效的,但在XHTML中則是無效的:
<script type="text/javascript">
    function compare(a, b) {
        if (a < b) {
            alert("A is less than B");
        } else if (a > b) {
            alert("A is greater than B");
        } else {
            alert(" A is equal to B");
        }
    }
</script>
代碼中的比較語句a < b 中的小於號(<)在XHTML中將被看成開始一個新標籤來解析。可是做爲標籤來說,小於號後面不能跟空格,所以就會致使語法錯誤。
避免相似語法錯誤的方法有兩個。一是用相應的HTML實體(&lt;)替換小於號(<),替換後的代碼以下:
<script type="text/javascript">
    function compare(a, b) {
        if (a &lt; b) {
            alert("A is less than B");
        } else if (a > b) {
            alert("A is greater than B");
        } else {
            alert(" A is equal to B");
        }
    }
</script>
這樣雖然能夠運行,但不便於理解。所以可用第二種方法,用一個CData片斷來包含JavaScript代碼。在XHTML(XML)中,CData片斷是文檔中的一個特殊區域,這個區域中能夠包含不須要解析的任意格式的文本內容。
<script type="text/javascript">
//某些瀏覽器不兼容XHTML,於是不支持CData片斷,可使用JavaScript註釋將CData標記註釋掉
//<![CDATA[        
    function compare(a, b) {
        if (a < b) {
            alert("A is less than B");
        } else if (a > b) {
            alert("A is greater than B");
        } else {
            alert(" A is equal to B");
        }
    }
//]]>
</script> 文檔

2.3 <noscript>元素

這個元素能夠包含可以出如今文檔<body>中的任何HTML元素——<script>元素除外,包含在<nosript>元素中的內容只有在下列狀況下才會顯示出來:
1.瀏覽器不支持腳本
2.瀏覽器支持腳本,但腳本被禁用。
<html>
    <head>
        <title>Example HTML Page</title>
        <script type="text/javascript" src="example1.js"></script>
        <script type="text/javascript" src="example2.js"></script>
    </head>
    <body>
        <noscript>
            <p>本頁面須要瀏覽器支持(啓用)JavaScript</p>
        </noscript>
    </body>
</html>


以上全部內容均摘自圖書《JavaScript 高級程序設計(第2版)》[美] Nicholas C.Zakas 著 李鬆峯 曹力 譯

相關文章
相關標籤/搜索