HTML中的JavaScript

將JavaScript插入到HTML中,主要的方法就是使用<script>標(biāo)簽医瘫。

<noscript>

作用

針對(duì)早起瀏覽器不支持JavaScript的問題箫攀,提供一個(gè)頁面優(yōu)雅降級(jí)的處理方案昔搂。

<noscript>顯示的條件

  • 瀏覽器不支持腳本竹观。
  • 瀏覽器對(duì)腳本的支持被關(guān)閉。

這兩個(gè)條件只要滿足其中之一包含在<noscript>中的內(nèi)容就會(huì)進(jìn)行渲染遭赂;否則循诉,瀏覽器不會(huì)渲染其中的內(nèi)容。

出現(xiàn)的位置

<noscript>元素可以包含任何可以出現(xiàn)在<body>中的HTML元素撇他∏衙ǎ【<script>除外】

<script>元素

<script>元素中的屬性:

  • type:【可選】表示代碼塊中腳本語言的類型(MIME類型)。默認(rèn)值為text/javascript困肩。
    取值:application/x-javascript表示JavaScript划纽。module表示模塊,只能使用import和export锌畸。
  • src:【可選】表示包含要執(zhí)行的腳本的外部文件勇劣。引用外部文件的時(shí)候使用。
  • async:【可選】表示立即下載頁面潭枣,但是不能阻止其他頁面動(dòng)作芭毙。
  • defer:【可選】表示腳本可以延遲到文檔完全解析和顯示之后在執(zhí)行。

使用腳本的兩種方式

直接在網(wǎng)頁中嵌入JavaScript代碼
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        
    </head>

    <body>
        <script>
            function sayHi() {
                console.log("sayHi");
            }
            
            sayHi() // sayHi
        </script>
    </body>
</html>
引用外部JavaScript文件

hello.js

console.log("hello.js 文件");

index.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        
    </head>

    <body>
        <script src="hello.js"></script>
    </body>
</html>
注意事項(xiàng)

1卸耘、直接將js代碼嵌入到HTML文件中時(shí),字符串中不能出現(xiàn)</script>粘咖,否則將會(huì)報(bào)錯(cuò)蚣抗。通過使用轉(zhuǎn)義字符\進(jìn)行編碼。
2瓮下、引用外部文件時(shí)翰铡,不應(yīng)該在<script>標(biāo)簽內(nèi)插入JavaScript代碼。
3讽坏、加載外部JS文件的時(shí)候锭魔,不受瀏覽器同源策略限制。
4路呜、HTML中的<script>是按順序進(jìn)行解釋【在沒有使用deferasync的情況下】迷捧。
5织咧、盡量使用引入外部文件,這樣便于維護(hù)漠秋、緩存【如果兩個(gè)頁面引用同一個(gè)js笙蒙,這個(gè)js文件只需要下載一次即可】。

<script>標(biāo)簽的位置

  • 之前:所有的<script>標(biāo)簽放在<head>中庆锦,這樣把外部的css捅位、js文件都集中放在一起。

缺點(diǎn):導(dǎo)致頁面渲染的延遲:因?yàn)楸仨毎?code><head>中所有的JS文件全部下載搂抒、解析和解釋之后艇搀,才開始進(jìn)行頁面的渲染。


  • 現(xiàn)在:將<script>標(biāo)簽放在</body>標(biāo)簽之前求晶。

推遲執(zhí)行腳本-defer

屬性defer:告訴瀏覽器立即下載js文件焰雕,但是延遲執(zhí)行。腳本會(huì)延遲到整個(gè)頁面都解釋完畢后再運(yùn)行誉帅。

異步執(zhí)行腳本- async

屬性async:告訴瀏覽器立即下載js文件淀散,但是延遲執(zhí)行。有多個(gè)外部腳本時(shí)蚜锨,可以同時(shí)運(yùn)行档插。

動(dòng)態(tài)加載腳本

使用JavaScript中的DOM API進(jìn)行動(dòng)態(tài)加載腳本。

方法一:使用document.create()進(jìn)行
通過DOM動(dòng)態(tài)添加script元素同時(shí)加載指定的腳本亚再。

function loadScript(url) {
  let script = document.createElement("script");
  script.src = url;
  script.type = "text/javascript";
  document.head.appendChild(script);
}

方法二:使用XMLHttpRequest進(jìn)行動(dòng)態(tài)加載JS

// 獲取js
function getJS(url) {
    let xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                runJS(xhr.responseText);
            } else {
                throw Error("加載失敗")
            }
        }
    }
    xhr.send();
}

// 運(yùn)行js
function runJS(text) {
    let script = document.createElement("script");
    script.type = "text/javascript";
    // script.text = text;  // 和下一行作用一致郭膛。
    script.appendChild(document.createTextNode(text))
    document.head.appendChild(script);
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市氛悬,隨后出現(xiàn)的幾起案子则剃,更是在濱河造成了極大的恐慌,老刑警劉巖如捅,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棍现,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡镜遣,警方通過查閱死者的電腦和手機(jī)己肮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悲关,“玉大人谎僻,你說我怎么就攤上這事≡⑷瑁” “怎么了艘绍?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長秫筏。 經(jīng)常有香客問我诱鞠,道長挎挖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任般甲,我火速辦了婚禮肋乍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘敷存。我一直安慰自己墓造,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布锚烦。 她就那樣靜靜地躺著觅闽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涮俄。 梳的紋絲不亂的頭發(fā)上蛉拙,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音彻亲,去河邊找鬼孕锄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛苞尝,可吹牛的內(nèi)容都是我干的畸肆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼宙址,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼轴脐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起抡砂,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤振惰,失蹤者是張志新(化名)和其女友劉穎雏蛮,沒想到半個(gè)月后邓馒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體墙杯,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年丑搔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了厦瓢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡低匙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碳锈,到底是詐尸還是另有隱情顽冶,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布售碳,位于F島的核電站强重,受9級(jí)特大地震影響绞呈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜间景,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一佃声、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧倘要,春花似錦圾亏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泽西,卻和暖如春曹铃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捧杉。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工陕见, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人味抖。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓评甜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親非竿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜕着,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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