第九次:瀏覽器模型參考問題

學(xué)習(xí)教材為:https://wangdoc.com/javascript/bom/index.html

1.如何讓JS可以控制瀏覽器的各種功能及塘?

網(wǎng)頁內(nèi)嵌了 JavaScript 腳本,瀏覽器加載網(wǎng)頁,就會去執(zhí)行腳本桑驱,從而達到操作瀏覽器的目的,實現(xiàn)網(wǎng)頁的各種動態(tài)效果。

2.有哪些方法可以網(wǎng)頁中嵌入 JavaScript 代碼?

  • <script>元素直接嵌入代碼福稳。
  • <script>標簽加載外部腳本
  • 事件屬性
  • URL 協(xié)議

3.script標簽的type屬性有什么作用?

用來指定腳本類型瑞侮。對 JavaScript 腳本來說的圆,type屬性可以設(shè)為兩種值。
text/javascript:這是默認值半火,也是歷史上一貫設(shè)定的值越妈。如果你省略type屬性,默認就是這個值钮糖。對于老式瀏覽器梅掠,設(shè)為這個值比較好。
application/javascript:對于較新的瀏覽器店归,建議設(shè)為這個值瓤檐。

4.如何防止攻擊者篡改外部腳本?

script標簽通過設(shè)置integrity屬性娱节,寫入外部腳本的Hash簽名,用來驗證腳本的一致性祭示,從而避免攻擊者篡改外部腳本肄满。

5.網(wǎng)頁是如何加載的?

瀏覽器一邊下載 HTML 網(wǎng)頁质涛,一邊開始解析稠歉。也就是說,不等到下載完汇陆,就開始解析怒炸。
解析過程中,瀏覽器發(fā)現(xiàn)<script>元素毡代,就暫停解析阅羹,把網(wǎng)頁渲染的控制權(quán)轉(zhuǎn)交給 JavaScript 引擎勺疼。
如果<script>元素引用了外部腳本,就下載該腳本再執(zhí)行捏鱼,否則就直接執(zhí)行代碼执庐。
JavaScript 引擎執(zhí)行完畢,控制權(quán)交還渲染引擎导梆,恢復(fù)往下解析 HTML 網(wǎng)頁轨淌。

6.為什么要把腳本文件都放在網(wǎng)頁尾部加載?

加載外部腳本時看尼,瀏覽器會暫停頁面渲染递鹉,等腳本下載并執(zhí)行完,再繼續(xù)進行渲染藏斩。為了避免外部腳本加載很長時間躏结,瀏覽器就會一直等待腳本下載完成,造成網(wǎng)頁長時間失去響應(yīng)灾茁,瀏覽器呈現(xiàn)假死狀態(tài)窜觉,腳本放在網(wǎng)頁尾部加載。
DOM結(jié)構(gòu)生成之間調(diào)用DOM節(jié)點北专,javascript會報錯禀挫,如果腳本在網(wǎng)頁尾部加載就不會出現(xiàn)這種情況。

7.defer屬性和async屬性的異同拓颓?

腳本之間沒有依賴關(guān)系语婴,就使用async屬性,如果腳本之間有依賴關(guān)系驶睦,就使用defer屬性砰左。如果同時使用async和defer屬性,后者不起作用场航,瀏覽器行為由async屬性決定缠导。
都可以解決腳本文件下載阻塞網(wǎng)頁渲染的問題;
defer腳本執(zhí)行的順序溉痢,就是腳本在頁面中出現(xiàn)的順序僻造;async腳本執(zhí)行的順序,哪個腳本先下載結(jié)束孩饼,就先執(zhí)行哪個腳本髓削;
defer瀏覽器完成解析頁面才會執(zhí)行下載完成的腳本;async瀏覽器解析過程中有下載完成的腳本镀娶,就會先執(zhí)行腳本立膛;
defer只對外部加載的腳本起作用。

8.如何實現(xiàn)腳本的動態(tài)加載梯码?

<script>元素還可以動態(tài)生成宝泵,生成后再插入頁面好啰,從而實現(xiàn)腳本的動態(tài)加載。
動態(tài)生成script元素 document.creatElement('script')鲁猩;
將生成的script元素插入 document.head.appendChild(script)坎怪。

9.瀏覽器的組成?

核心是兩部分:渲染引擎和 JavaScript 解釋器(又稱 JavaScript 引擎)廓握。

10.重流和重繪的異同搅窿?

重流和重繪并不一定一起發(fā)生,重流必然導(dǎo)致重繪隙券,重繪不一定需要重流男应;
重流和重繪的觸發(fā)因素不一樣:觸發(fā)重流的因素-添加、刪除可見的DOM娱仔,元素位置改變沐飘,元素尺寸改變,頁面渲染初始化牲迫,瀏覽器窗口尺寸改變耐朴;觸發(fā)重繪的因素-某元素的背景色,邊框顏色盹憎、文字顏色改變筛峭。

11.如何理解window對象?它有哪些屬性和方法陪每?

瀏覽器里面影晓,window對象(注意,w為小寫)指當(dāng)前的瀏覽器窗口檩禾。它也是當(dāng)前頁面的頂層對象挂签,即最高一層的對象,所有其他對象都是它的下屬盼产。一個變量如果未聲明饵婆,那么默認就是頂層對象的屬性。

屬性:

  • window.name屬性是一個字符串戏售,表示當(dāng)前瀏覽器窗口的名字侨核。窗口不一定需要名字,這個屬性主要配合超鏈接和表單的target屬性使用蜈项。
  • window.closed屬性返回一個布爾值,表示窗口是否關(guān)閉
  • window.opener屬性表示打開當(dāng)前窗口的父窗口续挟。如果當(dāng)前窗口沒有父窗口(即直接在地址欄輸入打開)紧卒,則返回null
  • window.self和window.window屬性都指向窗口本身。這兩個屬性只讀诗祸。
  • window.frames屬性返回一個類似數(shù)組的對象跑芳,成員為頁面內(nèi)所有框架窗口轴总,包括frame元素和iframe元素。
  • window.length屬性返回當(dāng)前網(wǎng)頁包含的框架總數(shù)博个。如果當(dāng)前網(wǎng)頁不包含frame和iframe元素怀樟,那么window.length就返回0。
  • window.frameElement屬性主要用于當(dāng)前窗口嵌在另一個網(wǎng)頁的情況(嵌入<object>盆佣、<iframe>或<embed>元素)往堡,返回當(dāng)前窗口所在的那個元素節(jié)點。
  • window.top屬性指向最頂層窗口共耍,主要用于在框架窗口(frame)里面獲取頂層窗口虑灰。
  • window.parent屬性指向父窗口。如果當(dāng)前窗口沒有父窗口痹兜,window.parent指向自身穆咐。
  • window.status屬性用于讀寫瀏覽器狀態(tài)欄的文本。

方法:

  • window.alert()方法彈出的對話框字旭,只有一個“確定”按鈕对湃,往往用來通知用戶某些信息。
  • window.prompt()方法彈出的對話框遗淳,提示文字的下方拍柒,還有一個輸入框,要求用戶輸入信息洲脂,并有“確定”和“取消”兩個按鈕斤儿。
  • window.confirm()方法彈出的對話框,除了提示信息之外恐锦,只有“確定”和“取消”兩個按鈕往果,往往用來征詢用戶是否同意。
  • window.open方法用于新建另一個瀏覽器窗口一铅,類似于瀏覽器菜單的新建窗口選項陕贮。它會返回新窗口的引用,如果無法新建窗口潘飘,則返回null肮之。
  • window.close方法用于關(guān)閉當(dāng)前窗口,一般只用來關(guān)閉window.open方法新建的窗口卜录。
  • window.stop()方法完全等同于單擊瀏覽器的停止按鈕戈擒,會停止加載圖像、視頻等正在或等待加載的對象艰毒。
  • window.moveTo()方法用于移動瀏覽器窗口到指定位置筐高。它接受兩個參數(shù),分別是窗口左上角距離屏幕左上角的水平距離和垂直距離,單位為像素柑土。
  • window.moveBy()方法將窗口移動到一個相對位置蜀肘。它接受兩個參數(shù),分別是窗口左上角向右移動的水平距離和向下移動的垂直距離稽屏,單位為像素扮宠。
  • window.resizeTo()方法用于縮放窗口到指定大小。
  • window.resizeBy()方法用于縮放窗口狐榔。它與window.resizeTo()的區(qū)別是坛增,它按照相對的量縮放,window.resizeTo()需要給出縮放后的絕對大小荒叼。

12.Navigator 對象有哪些屬性和方法轿偎?

屬性:

  • navigator.userAgent屬性返回瀏覽器的 User Agent 字符串,表示瀏覽器的廠商和版本信息被廓;
  • Navigator.plugins屬性返回一個類似數(shù)組的對象坏晦,成員是 Plugin 實例對象,表示瀏覽器安裝的插件嫁乘,比如 Flash昆婿、ActiveX 等;
  • Navigator.platform屬性返回用戶的操作系統(tǒng)信息蜓斧,比如MacIntel仓蛆、Win32、Linux x86_64等 挎春;
  • navigator.onLine屬性返回一個布爾值看疙,表示用戶當(dāng)前在線還是離線(瀏覽器斷線);
  • Navigator.language屬性返回一個字符串直奋,表示瀏覽器的首選語言能庆。該屬性只讀;
  • Navigator.geolocation屬性返回一個 Geolocation 對象脚线,包含用戶地理位置的信息搁胆;
  • navigator.cookieEnabled屬性返回一個布爾值,表示瀏覽器的 Cookie 功能是否打開邮绿。

方法:

  • navigator.javaEnabled()方法返回一個布爾值渠旁,表示瀏覽器是否能運行 Java Applet 小程序;
  • Navigator.sendBeacon()方法用于向服務(wù)器異步發(fā)送數(shù)據(jù)船逮。
  • 實驗性屬性:navigator.deviceMemory顾腊;navigator.hardwareConcurrency;navigator.connection挖胃。

13.Cookie的用途有哪些杂靶?Cookie 與 HTTP 協(xié)議的關(guān)系承耿?

Cookie 主要保存狀態(tài)信息,以下是一些主要用途伪煤。

用途:

  • 對話(session)管理:保存登錄、購物車等需要記錄的信息凛辣。
  • 個性化信息:保存用戶的偏好抱既,比如網(wǎng)頁的字體大小、背景色等等扁誓。
  • 追蹤用戶:記錄和分析用戶行為防泵。

關(guān)系:

  • Cookie 由 HTTP 協(xié)議生成,也主要是供 HTTP 協(xié)議使用蝗敢。

14.AJAX 需經(jīng)過哪些步驟捷泞?

  • 創(chuàng)建 XMLHttpRequest 實例;
  • 發(fā)出 HTTP 請求寿谴;
  • 接收服務(wù)器傳回的數(shù)據(jù)锁右;
  • 更新網(wǎng)頁數(shù)據(jù)。

15.如何理解同源讶泰?

協(xié)議咏瑟、域名、端口三者皆相同痪署。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(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
  • 文/不壞的土叔 我叫張陵坟岔,是天一觀的道長。 經(jīng)常有香客問我摔桦,道長社付,這世上最難降的妖魔是什么承疲? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮鸥咖,結(jié)果婚禮上燕鸽,老公的妹妹穿的比我還像新娘。我一直安慰自己啼辣,他們只是感情好啊研,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸥拧,像睡著了一般党远。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上富弦,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天沟娱,我揣著相機與錄音,去河邊找鬼腕柜。 笑死济似,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盏缤。 我是一名探鬼主播碱屁,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蛾找!你這毒婦竟也來了娩脾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤打毛,失蹤者是張志新(化名)和其女友劉穎柿赊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幻枉,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡碰声,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了熬甫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胰挑。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖椿肩,靈堂內(nèi)的尸體忽然破棺而出瞻颂,到底是詐尸還是另有隱情,我是刑警寧澤郑象,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布贡这,位于F島的核電站,受9級特大地震影響厂榛,放射性物質(zhì)發(fā)生泄漏盖矫。R本人自食惡果不足惜丽惭,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辈双。 院中可真熱鬧责掏,春花似錦、人聲如沸湃望。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喜爷。三九已至,卻和暖如春萄唇,著一層夾襖步出監(jiān)牢的瞬間檩帐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工另萤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留湃密,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓四敞,卻偏偏與公主長得像泛源,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子忿危,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

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