2.1<script> 元素

在HTML中添加JavaScript的主要方法,就是使用<script>元素。
HTML4.01為<script>添加了6個(gè)屬性

① async: 可選恤筛,表示立即下載腳本,但是不妨礙頁(yè)面中的其他操作芹橡,只對(duì)外部腳本文件有效
② charset: 可選毒坛, 表示通過(guò)src屬性指定的代碼的字符集,這個(gè)值已經(jīng)很少有人用了林说,大多數(shù)的瀏覽器也會(huì)忽略它的值
③ defer: 可選煎殷,表示腳本可以延遲到文檔完全被解析和顯示之后執(zhí)行。只對(duì)外部腳本文件有效腿箩,IE7及更早的版本對(duì)嵌入腳本也支持這個(gè)屬性
④ language: 已廢棄豪直,表示編寫(xiě)代碼使用的腳本語(yǔ)言
⑤ src: 可選, 表示包含要執(zhí)行代碼的外部文件
⑥ type: 可選珠移, 表示編寫(xiě)代碼使用的腳本語(yǔ)言的內(nèi)容類(lèi)型弓乙,MIME類(lèi)型,默認(rèn)值是 text/javascript

使用<script>元素的方式有兩種
1钧惧、直接在頁(yè)面中嵌入JavaScript代碼

包含在<script>元素內(nèi)部的JS代碼會(huì)被從上到下的順序依次執(zhí)行暇韧,
在使用<script>嵌入JS代碼時(shí),不要在代碼中的任何地方出現(xiàn)“</script>“字符串浓瞪,否則就會(huì)被認(rèn)為是結(jié)束的</script>標(biāo)簽懈玻。如果避免不了要使用可以通過(guò)轉(zhuǎn)義字符“\”解決這個(gè)問(wèn)題。

2乾颁、包含外部的JavaScript文件

如果要通過(guò)<script>元素來(lái)包含外部的JS文件涂乌,那么src屬性就是必需的。這個(gè)屬性就是指向外部JS的鏈接地址钮孵,例如:

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

這樣外部文件demo.js就被加載到當(dāng)前的頁(yè)面中骂倘。
與解析嵌入式JS代碼一樣,在解析外部JS文件時(shí)巴席,頁(yè)面的處理會(huì)暫時(shí)停止历涝。
需要注意的是,在帶有src屬性的<script>元素中不應(yīng)該在其<script>與</script>之間在包含額外的JS代碼,如果包含了漾唉,則會(huì)被忽略不執(zhí)行荧库。
只要不存在defer和async屬性,瀏覽器就會(huì)按照<script>元素在頁(yè)面中出現(xiàn)的先后順序依次解析赵刑。

標(biāo)簽的位置

按照傳統(tǒng)的做法分衫,所有<script>元素都應(yīng)該放在<head>元素中,這樣使頁(yè)面中所有外部文件的引用都放在相同的地方般此。前邊說(shuō)過(guò)蚪战,在JS文件加載解析時(shí)牵现,頁(yè)面會(huì)暫時(shí)停止,這樣對(duì)于有很多JS的頁(yè)面來(lái)說(shuō)邀桑,會(huì)導(dǎo)致瀏覽器在呈現(xiàn)頁(yè)面前出現(xiàn)明顯的延遲瞎疼,延遲期間,瀏覽器窗口是一邊空白壁畸,這對(duì)于用戶(hù)來(lái)說(shuō)是很不友好的行為贼急。
為了避免這個(gè)問(wèn)題,現(xiàn)代的web應(yīng)用程序都把全部JS引用放在<body>元素中頁(yè)面內(nèi)容的后面

<!DOCTYPE html>
<html>
  <head>
    <title>DEMO</title>
  </head>
  <body>
    <!--  頁(yè)面內(nèi)容 -->
    <script src="js/demo1.js" type="text/javascript"></script>
    <script src="js/demo2.js" type="text/javascript"></script>
  </body>
</html>

這樣捏萍,頁(yè)面的內(nèi)容完全加載在瀏覽器之后太抓,才會(huì)解析JS代碼,很大程度上改善頁(yè)面延遲的問(wèn)題令杈。

延遲腳本

(可忽略不看)
前邊提到<script>標(biāo)簽的defer屬性走敌,為什么不添加defer屬性,而是要把文件放在頁(yè)面的后面这揣?
添加defer屬性悔常,腳本會(huì)被延遲到整個(gè)頁(yè)面都解析完畢之后再運(yùn)行,相當(dāng)于告訴瀏覽器立即下載给赞,但延后執(zhí)行
在HTML5規(guī)范中要求腳本按照他們出現(xiàn)的先后順序執(zhí)行机打,在現(xiàn)實(shí)中,延遲腳本并不一定會(huì)按照順序執(zhí)行片迅,所以最好只包含一個(gè)延遲腳本残邀。
defer屬性只使用于外部的腳本文件,這一點(diǎn)在HTML5中明確規(guī)定柑蛇,因此支持HTML5的實(shí)現(xiàn)會(huì)忽略給嵌入腳本設(shè)置的defer屬性芥挣。所以,把延遲腳本放在頁(yè)面底部仍然是最好的選擇耻台!

異步腳本

HTML5為<script>元素定義了async屬性空免,與defer類(lèi)似,都是用于改變處理腳本的行為盆耽,只適用于外部腳本文件蹋砚,并告訴瀏覽器立即下載文件,與defer不同摄杂,標(biāo)記async的腳本并不保證按照指定的先后順序執(zhí)行坝咐,因此,要確保腳本文件之間互不依賴(lài)析恢。
指定async的目的是不讓頁(yè)面等待腳本下載和執(zhí)行墨坚,從而異步加載頁(yè)面其它內(nèi)容,建議異步腳本不要在加載期間修改DOM

嵌入代碼和外部文件

在HTML中嵌入Javascript代碼雖然沒(méi)有問(wèn)題映挂,但是一般認(rèn)為最好的做法還是盡可能使用外部文件來(lái)包含Javascript代碼泽篮。
引用外部文件盗尸,會(huì)有幾個(gè)有點(diǎn)
1、可維護(hù)性咪辱,
2振劳、可緩存椎组,瀏覽器根據(jù)具體的設(shè)置緩存鏈接的所有外部Javascript文件
3油狂、適應(yīng)未來(lái),

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末寸癌,一起剝皮案震驚了整個(gè)濱河市专筷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蒸苇,老刑警劉巖磷蛹,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異溪烤,居然都是意外死亡味咳,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)檬嘀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)槽驶,“玉大人,你說(shuō)我怎么就攤上這事鸳兽〉囝恚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵揍异,是天一觀的道長(zhǎng)全陨。 經(jīng)常有香客問(wèn)我,道長(zhǎng)衷掷,這世上最難降的妖魔是什么辱姨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮戚嗅,結(jié)果婚禮上雨涛,老公的妹妹穿的比我還像新娘。我一直安慰自己渡处,他們只是感情好镜悉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著医瘫,像睡著了一般侣肄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上醇份,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天稼锅,我揣著相機(jī)與錄音吼具,去河邊找鬼。 笑死矩距,一個(gè)胖子當(dāng)著我的面吹牛拗盒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锥债,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼陡蝇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了哮肚?” 一聲冷哼從身側(cè)響起登夫,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎允趟,沒(méi)想到半個(gè)月后恼策,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡潮剪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年涣楷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抗碰。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狮斗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出改含,到底是詐尸還是另有隱情情龄,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布捍壤,位于F島的核電站骤视,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鹃觉。R本人自食惡果不足惜专酗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盗扇。 院中可真熱鬧祷肯,春花似錦、人聲如沸疗隶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)斑鼻。三九已至蒋纬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜀备。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工关摇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碾阁。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓输虱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親脂凶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宪睹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)艰猬,斷路器横堡,智...
    卡卡羅2017閱讀 134,668評(píng)論 18 139
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)冠桃。 注意:講述HT...
    kismetajun閱讀 27,489評(píng)論 1 45
  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,150評(píng)論 0 13
  • 山西醫(yī)科大學(xué)第二醫(yī)院西院病理科 張鳳 2017年9月7號(hào)道宅,老公我兒子一家人來(lái)到了西安食听。兒子剛滿(mǎn)三個(gè)月,憨憨可愛(ài)的樣...
    尹二尹閱讀 236評(píng)論 1 1
  • Headspace 是由冥想領(lǐng)域的專(zhuān)家 Andy Puddicombe 建立的一個(gè)指導(dǎo)人們?nèi)绾乌は氲钠脚_(tái),其官方 ...
    最美應(yīng)用閱讀 1,083評(píng)論 1 15