久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    <script>元素

     程序員讀書空間 2023-02-26 發(fā)布于浙江

    將JavaScript插入HTML的主要方法是使用<script>元素。

    1 <script> 的基本使用方式

    使用<script>的方式有兩種,第一種就是通過 <script> 直接在網(wǎng)頁中嵌入JavaScript代碼:

    <script>  function sayHi() {    console.log("Hi! ");  }</script>

    包含在<script>內(nèi)的代碼會被從上到下解釋。在上面的例子中,被解釋的是一個函數(shù)定義,并且該函數(shù)會被保存在解釋器環(huán)境中。在<script>元素中的代碼被計算完成之前,頁面的其余內(nèi)容不會被加載,也不會被顯示。在使用行內(nèi)JavaScript代碼時,要注意代碼中不能出現(xiàn)字符串</script>。比如,下面的代碼會導(dǎo)致瀏覽器報錯:

      <script>    function sayScript() {      console.log("</script>");    }  </script>

    如何正確的寫:(只需要轉(zhuǎn)義字符“\”)

    <script>  function sayScript() {    console.log("<\/script>");  }</script>

    使用<script>的方式有兩種,第二種就是使用包含外部文件中的JavaScript,必須使用src屬性。這個屬性的值是一個URL,指向包含JavaScript代碼的文件,比如:

    <script src="example.js"></script>

    這個例子在頁面中加載了一個名為example.js的外部文件。文件本身只需包含要放在<script>的起始及結(jié)束標簽中間的JavaScript代碼。與解釋行內(nèi)JavaScript一樣,在解釋外部JavaScript文件時,頁面也會阻塞。

    瀏覽器在解析這個資源時,會向src屬性指定的路徑發(fā)送一個GET請求,以取得相應(yīng)資源。

    2 <script> 標簽的位置 

    過去,所有<script>元素都被放在頁面的<head>標簽內(nèi),如下面的例子所示:

     <! DOCTYPE html> <html>    <head>    <title>Example HTML Page</title>    <script src="example1.js"></script>    <script src="example2.js"></script>    </head>    <body>    <! -- 這里是頁面內(nèi)容 -->    </body>  </html>

    這種做法的主要目的是把外部的CSS和JavaScript文件都集中放到一起。不過,把所有JavaScript文件都放在<head>里,也就意味著必須把所有JavaScript代碼都下載、解析和解釋完成后,才能開始渲染頁面(頁面在瀏覽器解析到<body>的起始標簽時開始渲染)。對于需要很多JavaScript的頁面,這會導(dǎo)致頁面渲染的明顯延遲,在此期間瀏覽器窗口完全空白。為解決這個問題,現(xiàn)代Web應(yīng)用程序通常將所有JavaScript引用放在<body>元素中的頁面內(nèi)容后面,如下面的例子所示:

    <! DOCTYPE html><html>  <head>  <title>Example HTML Page</title>  </head>  <body>  <! -- 這里是頁面內(nèi)容 -->  <scriptsrc="example1.js"></script>  <scriptsrc="example2.js"></script>  </body></html>

    這樣一來,頁面會在處理JavaScript代碼之前完全渲染頁面。用戶會感覺頁面加載更快了,因為瀏覽器顯示空白頁面的時間短了。

    3 推遲執(zhí)行腳本

    HTML 4.01為<script>元素定義了一個叫defer的屬性。這個屬性表示腳本在執(zhí)行的時候不會改變頁面的結(jié)構(gòu)。也就是說,腳本會被延遲到整個頁面都解析完畢后再運行。因此,在<script>元素上設(shè)置defer屬性,相當于告訴瀏覽器立即下載,但延遲執(zhí)行。

        <! DOCTYPE html>    <html>      <head>      <title>Example HTML Page</title>      <script defer src="example1.js"></script>      <script defer src="example2.js"></script>      </head>      <body>      <! -- 這里是頁面內(nèi)容 -->      </body>    </html>

    雖然這個例子中的<script>元素包含在頁面的<head>中,但它們會在瀏覽器解析到結(jié)束的</html>標簽后才會執(zhí)行。

    HTML5規(guī)范要求腳本應(yīng)該按照它們出現(xiàn)的順序執(zhí)行,因此第一個推遲的腳本會在第二個推遲的腳本之前執(zhí)行,而且兩者都會在DOMContentLoaded事件之前執(zhí)行。

    defer屬性只對外部腳本文件才有效。這是HTML5中明確規(guī)定的,因此支持HTML5的瀏覽器會忽略行內(nèi)腳本的defer屬性。

    4 異步執(zhí)行腳本

    HTML5為<script>元素定義了async屬性,async屬性與defer類似,它們兩者也都只適用于外部腳本,都會告訴瀏覽器立即開始下載,但延遲執(zhí)行,與defer不同的是,標記為async的腳本并不保證能按照它們出現(xiàn)的次序執(zhí)行,比如:

    <! DOCTYPE html><html>  <head>  <title>Example HTML Page</title>  <script async src="example1.js"></script>  <script async src="example2.js"></script>  </head>  <body>  <! -- 這里是頁面內(nèi)容 -->  </body></html>

    在這里,第二個腳本可能先于第一個腳本執(zhí)行。

    5 動態(tài)加載腳本

    JavaScript可以使用DOMAPI,所以通過向DOM中動態(tài)添加script元素同樣可以加載指定的腳本。只要創(chuàng)建一個script元素并將其添加到DOM即可。

      let script = document.createElement('script');  script.src = 'gibberish.js';  document.head.appendChild(script);

    完畢

      轉(zhuǎn)藏 分享 獻花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 性饥渴少妇AV无码毛片| 免费无码又爽又刺激高潮| 国产JJIZZ女人多水喷水| 亚洲AV无码一区二区三区性色| 亚洲日本精品一区二区| 欧美伦费免费全部午夜最新| 18禁超污无遮挡无码网址极速| 成人福利国产午夜AV免费不卡在线| 国内综合精品午夜久久资源| 亚洲国产中文字幕精品| 又黄又无遮挡AAAAA毛片| 国内精品久久久久影院网站| 欧美国产综合欧美视频| 日本道精品一区二区三区| 国产乱人伦偷精品视频下| 国产福利酱国产一区二区| 亚洲欧洲日产国码无码AV喷潮| 无码福利写真片视频在线播放| 国产女主播白浆在线看| 国内极度色诱视频网站| 老司机导航亚洲精品导航| 国产第一页浮力影院入口| 亚洲男女一区二区三区| 亚洲欧美综合人成在线| 国产精品毛片一区二区| 18禁超污无遮挡无码网址| 人妻少妇精品视频专区| 久久久一本精品99久久精品88| 国产成人亚洲欧美二区综合| 精品玖玖玖视频在线观看| 久久亚洲2019中文字幕| 国产精品无码无需播放器| 亚洲中文字幕无码不卡电影| 成人网站网址导航| 亚洲另类激情专区小说图片| 国产V片在线播放免费无码| 漂亮人妻中文字幕丝袜| 精品国产中文字幕懂色| 无码8090精品久久一区| 久久综合久久美利坚合众国| 重口SM一区二区三区视频|