《JavaScript高級(jí)程序設(shè)計(jì)》筆記2:在HTML中使用Javascript

參考原文:《JavaScript高級(jí)程序設(shè)計(jì)》筆記:在HTML中使用Javascript

<script>元素

  1. 直接頁(yè)面嵌入JavaScript代碼
<script type="text/javascript">
    function sayHi(){
        alert("Hi!");
    }
</script>

包含在<script>元素內(nèi)部的JavaScript代碼從上至下依次解釋年枕。上例,解釋器解釋一個(gè)函數(shù)的定義肋杖,然后把定義保存自己環(huán)境中。在解釋器對(duì)<script>內(nèi)部代碼求值完畢以前,頁(yè)面中其余內(nèi)容不會(huì)被瀏覽器加載或顯示漱贱。

  1. 包含外部JavaScript文件
<script type="text/javascript" src="js/jquery-1.8.3.min.js">
//注意:在帶有src屬性的<script>只會(huì)下載并執(zhí)行外部文件妇垢,嵌入的代碼會(huì)被忽略
</script>

與解析嵌入式JavaScript代碼一樣,解析外部JavaScript文件(包括下載該文件)時(shí)宰衙,頁(yè)面的處理也會(huì)暫時(shí)停止平道。

延遲腳本——defer屬性

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Example HTML Page</title>
<meta name="description" content=""/>
<meta name="keywords" content=""/>
<link type="text/css" rel="stylesheet" href="css/reset.css"/>
<link type="text/css" rel="stylesheet" href="css/main.css"/>
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" defer="defer" src="example1.js"></script>
</head>
<body>    
<!--這里是內(nèi)容-->
</body>
</html>

<script>標(biāo)簽定義了defer屬性。這個(gè)屬性的用途是表明腳本在執(zhí)行時(shí)不會(huì)影響頁(yè)面的構(gòu)造供炼。也就是說(shuō)一屋,腳本會(huì)被延遲到整個(gè)頁(yè)面都解析完畢后再運(yùn)行。因此袋哼,在<script>元素中設(shè)置defer屬性冀墨,相當(dāng)于告訴瀏覽器立即下載,但延遲執(zhí)行涛贯。
  在上例中诽嘉,雖然我們把<script>元素放在了文檔的<head>元素中,但其中包含的腳本將延遲到瀏覽器遇到</html>標(biāo)簽后再執(zhí)行疫蔓。

  • <script>元素中設(shè)置defer屬性含懊,相當(dāng)于告訴瀏覽器立即下載,但延遲執(zhí)行衅胀。
  • H5會(huì)忽略給嵌入式腳本設(shè)置的defer屬性岔乔。
  • 多個(gè)延遲腳本實(shí)際中不一定按照順序執(zhí)行,最好只包含一個(gè)延遲腳本滚躯。
  • 延遲腳本放頁(yè)面底部為最佳選擇雏门。(不支持defer屬性的瀏覽器會(huì)忽略此屬性,正常處理此腳本)*

異步加載——async屬性

<script type="text/javascript" async src="example1.js"></script>
  • async只適用于外部腳本文件掸掏,并告訴瀏覽器立即下載文件茁影,但不能保證按照指定的先后順序執(zhí)行。
  • 指定async屬性的目的是不讓頁(yè)面等待腳本下載和執(zhí)行丧凤,從而異步加載頁(yè)面其他內(nèi)容募闲。因此,建議異步腳本不要再加載期間修改DOM愿待。
  • 異步腳本一定會(huì)在頁(yè)面load事件之前執(zhí)行浩螺,有可能會(huì)在DOM ContentLoaded事件觸發(fā)之前或之后執(zhí)行靴患。

文檔模型

最初的倆種文檔模式是:混雜模式(quirks mode)和標(biāo)準(zhǔn)模式(standards mode)∫觯混雜模式會(huì)讓IE的行為與(包含非標(biāo)準(zhǔn)特性的)IE5相同鸳君,而標(biāo)準(zhǔn)模式則讓IE的行為更接近標(biāo)準(zhǔn)行為。

如果在文檔開(kāi)始初沒(méi)有發(fā)現(xiàn)文檔類型聲明患蹂,則所有瀏覽器都會(huì)默認(rèn)開(kāi)啟混雜模式或颊。

<noscript>元素

包含在<noscript>元素中的內(nèi)容只有在下列情況下才會(huì)顯示出來(lái):

  • 瀏覽器不支持腳本
  • 瀏覽器支持腳本,但腳本被禁用
<body>
<noscript>
    <p>本頁(yè)面需要瀏覽器支持(啟動(dòng))JavaScript</p>
</noscript>
</body>

小結(jié)

  • 由于瀏覽器會(huì)先解析完不使用defer屬性的<script>元素中的代碼传于,然后再解析后面的內(nèi)容囱挑。所以,一般把<script>元素放在頁(yè)面最后—— 主要內(nèi)容后面格了,<body>標(biāo)簽之前看铆。
  • defer屬性——可以讓腳本在文檔完全呈現(xiàn)之后再執(zhí)行。延遲腳本總是按照指定它們的順序執(zhí)行(至少H5規(guī)范要求盛末,現(xiàn)實(shí)不一定)。
  • async屬性——可以表示當(dāng)前腳本不必等待其他腳本否淤,也不必阻塞文檔呈現(xiàn)悄但。但是,不保證執(zhí)行順序石抡!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末檐嚣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子啰扛,更是在濱河造成了極大的恐慌嚎京,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隐解,死亡現(xiàn)場(chǎng)離奇詭異鞍帝,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)煞茫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門帕涌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人续徽,你說(shuō)我怎么就攤上這事蚓曼。” “怎么了钦扭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵纫版,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我客情,道長(zhǎng)其弊,這世上最難降的妖魔是什么癞己? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮瑞凑,結(jié)果婚禮上末秃,老公的妹妹穿的比我還像新娘。我一直安慰自己籽御,他們只是感情好练慕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著技掏,像睡著了一般铃将。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哑梳,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天劲阎,我揣著相機(jī)與錄音,去河邊找鬼鸠真。 笑死悯仙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吠卷。 我是一名探鬼主播锡垄,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼祭隔!你這毒婦竟也來(lái)了货岭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤疾渴,失蹤者是張志新(化名)和其女友劉穎千贯,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體搞坝,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搔谴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞄沙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片己沛。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖距境,靈堂內(nèi)的尸體忽然破棺而出申尼,到底是詐尸還是另有隱情,我是刑警寧澤垫桂,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布师幕,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏霹粥。R本人自食惡果不足惜灭将,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望后控。 院中可真熱鬧庙曙,春花似錦、人聲如沸浩淘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)张抄。三九已至砂蔽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間署惯,已是汗流浹背左驾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留极谊,地道東北人诡右。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像轻猖,于是被迫代替她去往敵國(guó)和親稻爬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容