JS高程系列筆記--腳本引入及其位置

向HTML頁面中插入JavaScript腳本的主要方法有三種:

  • 頁面嵌入<script>標簽內聯(lián)
  • 頁面嵌入<script>標簽外聯(lián)
  • 直接在HTML元素中加入

嵌入<script>標簽內聯(lián)

<script type="text/javascript">
    function sayHi() {
        alert("hi");
    }
</script>

當瀏覽器執(zhí)行到上述<script>標簽時估脆,會暫停頁面其他部分的加載拂盯。

在使用<script>嵌入JavaScript代碼時妈倔,不要在代碼中的任何地方出現(xiàn)"</script>"字符串定枷,會被認為是代碼結束的標志:

<script type="text/javascript">
    function sayScript() {
        alert("</script>");//錯誤
    }
    sayScript();
</script>

但是可以將它分成兩部分扔涧,如:

<script type="text/javascript">
    function sayScript() {
        alert("<\/script>");//或alert('<'+'/script>');alert('</'+'script>');等
    }
    sayScript();
</script>

頁面嵌入<script>標簽外聯(lián)

此時需要指定src屬性:

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

可以是來自本地的js文件,也可以是外部域中的:

<script type="text/javascript" src="http://www.somewhere.com/somefile/somename.js"></script>

當src指定外部js文件地址后谤辜,<script>標簽內部就不應再包含額外腳本垄提。即使包含了額外的腳本,也會被忽略烈和。

<script>元素的屬性

async屬性:可選爱只。表示應該立即下載腳本,但不應妨礙頁面中的其他操作招刹,比如下載其他資源或者等待加載其他腳本恬试。只對外部腳本有效。
charset屬性:可選疯暑。表示通過src屬性指定的代碼的字符集训柴。
defer屬性:可選。表示腳本可以延遲到文檔完全被解析和顯示之后再執(zhí)行妇拯。只對外部腳本有效幻馁。
language屬性:已廢棄洗鸵,原來用于表示編寫代碼使用的腳本語言(如JavaScript、JvavScript1.2等)仗嗦。大多數(shù)瀏覽器都會忽略這個屬性膘滨,因此也木有必要用了。
src屬性:可選稀拐。表示包含要執(zhí)行代碼的外部文件火邓。
type屬性:可選〉虑耍可以看成是language屬性的替代屬性铲咨;表示編寫代碼使用的腳本語言的內容類型。雖然text/javascript和text/ecmascript都已經不被推薦使用蜓洪,但是考慮到瀏覽器兼容等鸣驱,目前type的值依然可以是text/javascript。但并非是必須的蝠咆。

無論是內聯(lián)還是外聯(lián)腳本,只要不存在defer和async屬性北滥,瀏覽器都會按照<script>出現(xiàn)的先后順序對它們依次進行解析刚操。

直接在HTML元素中加入

<button type="submit" onclick="alert('clicked me')">提交</button>

<script>標簽的位置

按照慣例,<script>元素應該放在頁面的<head>元素中再芋,和<link>位置類似菊霜,這樣做的目的就是把所有的外部文件(CSS和JavaScript)都放在同樣的位置。但是這樣會導致頁面內容出現(xiàn)延遲济赎。所以一般<script>標簽都放在<body>元素中內容的最后也就是</body>之前鉴逞。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>test</title>
    <link rel="stylesheet" href="index.css">
</head>
<body>
    <p>This is a para.</p>
    <button type="submit">提交</button>
    <script src="index.js" type="text/javascript"></script>
</body>
</html>

延遲腳本

既然有defer屬性的存在,那么就可以把<script>元素放在頁面的<head>標簽內司训,相當于提醒瀏覽器立即下載但是延遲執(zhí)行构捡。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>test</title>
    <link rel="stylesheet" href="index.css">
    <script src="index.js" type="text/javascript" defer="defer"></script>
</head>
<body>
    <p>This is a para.</p>
    <button type="submit">提交</button>
</body>
</html>

而當有兩個腳本都設置了defer="defer"時,HTML5規(guī)范規(guī)定了第一個腳本會比第二個腳本先執(zhí)行壳猜,但是實際上延遲腳本并不一定會按照順序執(zhí)行勾徽,因此最好只包含一個延遲腳本。

異步腳本

defer類似统扳,async只適用于外部腳本文件喘帚,并告訴瀏覽器立即下載文件。但是與defer不同的是咒钟,標記為async的腳本并不保證按照指定執(zhí)行順序執(zhí)行吹由。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市朱嘴,隨后出現(xiàn)的幾起案子倾鲫,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件级乍,死亡現(xiàn)場離奇詭異舌劳,居然都是意外死亡,警方通過查閱死者的電腦和手機玫荣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門甚淡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捅厂,你說我怎么就攤上這事贯卦。” “怎么了焙贷?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵撵割,是天一觀的道長。 經常有香客問我辙芍,道長啡彬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任故硅,我火速辦了婚禮庶灿,結果婚禮上,老公的妹妹穿的比我還像新娘吃衅。我一直安慰自己往踢,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布徘层。 她就那樣靜靜地躺著峻呕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪趣效。 梳的紋絲不亂的頭發(fā)上瘦癌,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音跷敬,去河邊找鬼佩憾。 笑死,一個胖子當著我的面吹牛干花,可吹牛的內容都是我干的妄帘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼池凄,長吁一口氣:“原來是場噩夢啊……” “哼抡驼!你這毒婦竟也來了?” 一聲冷哼從身側響起肿仑,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤致盟,失蹤者是張志新(化名)和其女友劉穎碎税,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馏锡,經...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡雷蹂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了杯道。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匪煌。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖党巾,靈堂內的尸體忽然破棺而出萎庭,到底是詐尸還是另有隱情,我是刑警寧澤齿拂,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布驳规,位于F島的核電站,受9級特大地震影響署海,放射性物質發(fā)生泄漏吗购。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一砸狞、第九天 我趴在偏房一處隱蔽的房頂上張望捻勉。 院中可真熱鬧,春花似錦趾代、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至笙什,卻和暖如春飘哨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背琐凭。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工芽隆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人统屈。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓胚吁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親愁憔。 傳聞我的和親對象是個殘疾皇子腕扶,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,751評論 1 92
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理吨掌,服務發(fā)現(xiàn)半抱,斷路器脓恕,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 簡單介紹JavaScript的發(fā)展歷史 JavaScript因互聯(lián)網而生,回顧它的歷史要從瀏覽器的歷史講起窿侈。 19...
    _Dot912閱讀 490評論 0 3
  • 前端開發(fā)面試知識點大綱: HTML&CSS: 對Web標準的理解炼幔、瀏覽器內核差異、兼容性史简、hack乃秀、CSS基本功:...
    秀才JaneBook閱讀 2,362評論 0 25