摘要:在這個階段屬性值是當(dāng)解析器遇到?jīng)]有和屬性的元素時,它把這些元素添加到文檔中,然后執(zhí)行行內(nèi)或外部腳本。這些腳本會同步執(zhí)行,并且在腳本下載如果需要和執(zhí)行時解析器會暫停。解析器恢復(fù)時這些文本會成為文檔的一部分。瀏覽器在對象上觸發(fā)事件。
1 客戶端JavaScript
window對象自身也有一個名為window的屬性,指向window對象
window.window.window.location.pathname;2 在HTML里嵌入JavaScript 2.1 script元素
在XHTML中使用JavaScript,則需要放到一個CDATA部分:
2.2 腳本類型
把type屬性設(shè)置為瀏覽器不能識別的值,即可在html頁面中嵌入任意文本內(nèi)容。
2.3 URL中的JavaScript(避免使用)
javascript:協(xié)議限定符
可以用void操作符強制函數(shù)調(diào)用或給表達式賦予undefined值
它被當(dāng)做一個多帶帶的一行代碼對待,語句之間必須用分號隔開。
w time ist?
書簽
書簽就是一個保存起來的URL。如果書簽是javascript:URL,那么保存的就是一小段腳本,叫做bookmarklet。只要書簽不返回值,它就可以操作當(dāng)前顯示的任何文檔。
3 JavaScript程序的執(zhí)行 3.1 同步、異步和延遲的腳本script標(biāo)簽可以有defer和async屬性,可以改變腳本的執(zhí)行方式。這些屬性只在和src屬性聯(lián)合使用時才有效:
async 屬性規(guī)定一旦腳本可用,則會異步執(zhí)行。async 屬性僅適用于外部腳本(只有在使用 src 屬性時)。
defer 屬性規(guī)定是否對腳本執(zhí)行進行延遲,直到頁面加載為止。
3.2 客戶端JavaScript時間線Web瀏覽器創(chuàng)建Document對象,并開始解析Web頁面,解析html元素和它們的文本內(nèi)容后添加Element對象和Text節(jié)點到文檔中。在這個階段documen.readystate屬性值是“l(fā)oading”
當(dāng)HTML解析器遇到?jīng)]有async和defer屬性的script元素時,它把這些元素添加到文檔中,然后執(zhí)行行內(nèi)或外部腳本。這些腳本會同步執(zhí)行,并且在腳本下載(如果需要)和執(zhí)行時解析器會暫停。這樣腳本就可以用documen.wrte()來把文本插入到輸入流中。解析器恢復(fù)時這些文本會成為文檔的一部分。同步腳本經(jīng)常簡單定義函數(shù)和注冊后面使用的注冊時間處理程序,但他們可以遍歷和操作文檔樹,因為在他們執(zhí)行時已經(jīng)存在了。這樣,同步腳本可以看到它自己的script元素和它們之前的文檔內(nèi)容。
當(dāng)解析器遇到設(shè)置了async屬性的script元素時,它開始下載腳本文本,并繼續(xù)解析文檔。腳本會在它下載完成后盡快執(zhí)行,但是解析器沒有停下來等它下載。異步腳本禁止使用document.write()方法。它們可以看到自己的script元素和它之前的所有文檔元素,并且可能或干脆不可能訪問其他的文檔內(nèi)容。
當(dāng)文檔完成解析,document.readyState屬性變成“interactive”。
所有有defer屬性的腳本,會桉它們在文檔里的出現(xiàn)順序執(zhí)行。異步腳本可能也會在這個時間執(zhí)行。延遲腳本能訪問完整的文檔樹,禁止使用document.write()方法。
瀏覽器在Document對象上觸發(fā)DOMContentLoaded事件。這標(biāo)志著程序執(zhí)行從同步腳本執(zhí)行階段轉(zhuǎn)換到事件驅(qū)動階段。但要注意,這時可能還有異步腳本沒有執(zhí)行完成
這時,文檔已經(jīng)完全解析完成,但是瀏覽器可能還在等待其他內(nèi)容載入,如圖片。當(dāng)所有這些內(nèi)容完成載入時,并且所有異步腳本完成載入和執(zhí)行,document.readyState屬性改變?yōu)椤癱omplete”,Web瀏覽器觸發(fā)Window對象上的load時間。
從此刻起,會調(diào)用異步事件,以異步響應(yīng)用戶輸入事件、網(wǎng)絡(luò)事件、計時器過期等。
4 兼容性和互用性 4.1 功能測試常見的功能測試:
if (element.addEventListener) { element.addEventListener("keydown", handler, false); element.addEventListener("keypress", handler, false); } else if (element.attachEvent) { element.attachEvent("onkeydown", handler); element.attachEvent("onkeypress", handler); } else { element.onkeydown = element.onkeypress = handler; }4.2 怪異模式和標(biāo)準(zhǔn)測試
document.compatMode屬性,如果為"CSS1Compat",則是在標(biāo)準(zhǔn)模式,如果在"BackCompat或undefined",則是在怪異模式。
4.3 瀏覽器測試早前通常需要做瀏覽器測試,即使用Navigator對象。
4.4 IE里的條件注釋IE中的條件注釋(Conditionalcomments)對IE的版本和IE非IE有優(yōu)秀的區(qū)分能力,是WEB設(shè)計中常用的hack方法。
條件注釋只能用于IE5以上。
gt :greater than,選擇條件版本以上版本,不包含條件版本
lt : lessthan,選擇條件版本以下版本,不包含條件版本
gte :greater than or equal,選擇條件版本以上版本,包含條件版本
lte :less than or equal,選擇條件版本以下版本,包含條件版本
! : 選擇條件版本以外所有版本,無論高低
使用方法:
您使用不是Internet Explorer
您正在使用InternetExplorer version 6或者一個非IE 瀏覽器
IE的JavaScript解釋器也支持條件注釋:
/*@cc_on @if(@_jscript) alert("You are using Internet Explorer"); @else*/ alert("you are not using Internet Explorer"); /*@end @*/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/79177.html
摘要:二服務(wù)端渲染初體驗使用的服務(wù)端渲染功能,需要引入提供的服務(wù)端渲染模塊,其作用是創(chuàng)建一個渲染器,該渲染器可以將實例渲染成字符串。 詳解Vue服務(wù)端渲染 一、服務(wù)端渲染 - 簡介 所謂服務(wù)端渲染就是將代碼的渲染交給服務(wù)器,服務(wù)器將渲染好的html字符串返回給客戶端,再由客戶端進行顯示。 服務(wù)器端渲染的優(yōu)點 有利于SEO搜索引擎優(yōu)化,因為服務(wù)端渲染是將渲染好的html字符串返回給了客戶端,...
摘要:如果你有一個高流量的站點,提高性能的第一步是在你的前面放一個反向代理服務(wù)器。使用在一個已經(jīng)存在的服務(wù)器前做反向代理,作為的一個核心應(yīng)用,已經(jīng)被用于全世界成千上萬的站點中。 如果你的 node 服務(wù)器前面沒有 nginx, 那么你可能做錯了?!?Bryan Hughes Node.js 是使用 最流行的語言— JavaScript 構(gòu)建服務(wù)器端應(yīng)用的領(lǐng)先工具 。由于可以同時提供 web ...
摘要:后端知識點總結(jié)基礎(chǔ)不是是一種軟件開發(fā)平臺,它的競爭對象歷史第一次有一種語言可以通吃前后端網(wǎng)站阿里云鏡像版本年初年中年底最新版本功能強大可靠,適合大型企業(yè)級項目簡單易用適合互聯(lián)網(wǎng)項目易用適合平臺性能好適合服務(wù)器端密集型項目不適合密集型項目密集 后端知識點總結(jié)——NODE.JS基礎(chǔ) 1.Node.js Node.js不是JS,是一種軟件開發(fā)平臺,它的競爭對象JSP/PHP/ASP.NET...
閱讀 3680·2021-11-25 09:43
閱讀 676·2021-09-22 15:59
閱讀 1779·2021-09-06 15:00
閱讀 1800·2021-09-02 09:54
閱讀 728·2019-08-30 15:56
閱讀 1212·2019-08-29 17:14
閱讀 1878·2019-08-29 13:15
閱讀 912·2019-08-28 18:28