權(quán)威指南讀書筆記 web瀏覽器中的javascript

web瀏覽器就是簡單地操作系統(tǒng)

在 HTML中嵌入javascript

  • 內(nèi)鏈嵌入蚯涮,放置在script標(biāo)簽中
  • 放置在由script標(biāo)簽的src屬性指定的外部文件
  • 放置在HTML事件處理程序中眯娱,該事件處理程序由onclick或onmouseover這樣的HTML屬性值指定
  • 放在一個URL里啤它,這個URL使用特殊的"javascript:"協(xié)議

后兩種不常使用

使用外部文件的優(yōu)勢

  • 有益于保持內(nèi)容和行為的分離,從而簡化HTML文件
  • 對于公用一個javascript文件的HTML來說糟把,只需要維護(hù)一份代碼即可袜炕。
  • 公用一個javascript文件的HTML來說麻诀,在客戶端加載時只需要加載一次锭吨,之后使用緩存蠢莺。
  • src屬性值可以是任意的URL,因此來自一個web服務(wù)器的javascript程序或web頁面可以使用由另一個web服務(wù)器提供的代碼零如。

URL中的javascript

URL后面跟一個javascript:協(xié)議限定符躏将,是另一種嵌入javascript代碼到客戶端的方式。這種協(xié)議類型指定URL內(nèi)容為任意字符串考蕾,這個字符串是會被javascript解釋器運(yùn)行的javascript代碼祸憋。他會被當(dāng)做一行代碼對待,因此語句間需使用分號肖卧。
javascript:url能識別的“資源”是轉(zhuǎn)換成字符串的執(zhí)行代碼的返回值蚯窥。該種方式可以使用在任何href的地方。部分瀏覽器會執(zhí)行URL中的代碼喜命,并使用返回的字符串作為帶顯示新文檔的內(nèi)容。其他瀏覽器不允許URL像上面一樣覆蓋當(dāng)前文檔內(nèi)容河劝,他們會忽略代碼的返回值壁榕。

同步、異步和延遲腳本

腳本的執(zhí)行只在默認(rèn)情況下是同步和阻塞的赎瞎。
defer和async屬性都在高速瀏覽器連接進(jìn)來的腳本不會使用document.write()牌里,也不會生成文檔內(nèi)容,因此瀏覽器可以在下載腳本時繼續(xù)解析和渲染文檔务甥。

ascyn屬性是得瀏覽器可以盡快執(zhí)行腳本牡辽,而不用在下載腳本時阻塞文檔的解析。
defer屬性會使瀏覽器延遲腳本的執(zhí)行敞临,直到文檔的在載入和解析完成态辛。
如果同時使用兩個屬性,瀏覽器會遵照async屬性忽略defer挺尿。

javascript單線程模式

HTML5 定義了一種并發(fā)的控制方式奏黑,叫做web worker,運(yùn)行在web worker線程里的代碼不能訪問文檔內(nèi)容编矾,不能和主線程或其他worker共享狀態(tài)熟史,只能和主線程和其他worker通過異步事件進(jìn)行通信,所以主線程不能檢測并發(fā)性窄俏。

javascript 時間線

  1. 瀏覽器創(chuàng)建document對象蹂匹,解析web頁面,把element對象中文本節(jié)點渲染到dom中凹蜈,這個階段 document.readystate = 'loading'限寞。

2.同步加載的script元素忍啸,把元素添加到文檔中,執(zhí)行內(nèi)部或外部腳本昆烁,并且在腳本下載和執(zhí)行時解析器會暫停吊骤,這樣腳本就可以用document.write()來把文本輸入到輸入流中。同步script會看見自己和他們之前的文檔內(nèi)容静尼。

3.遇到異步script開始下載腳本白粉,并繼續(xù)解析文檔。腳本會在他下載完成后盡快執(zhí)行鼠渺,但是解析器沒有停下來等他下載鸭巴。一步腳本禁止使用document.write()方法。

4.文檔解析完成 document.readyState='interactive'

5.defer腳本在這里按出現(xiàn)順序執(zhí)行拦盹,異步腳本可能也會在這個時間執(zhí)行鹃祖,延遲腳本能訪問文檔樹,禁止使用write()方法

6.瀏覽器觸發(fā)DOMContentLoad事件普舆,同步執(zhí)行過渡到異步事件階段恬口。

7.文檔解析完成,瀏覽器等待其他內(nèi)容載入沼侣,如圖片祖能。所有內(nèi)容完成載入,一步腳本完成載入或執(zhí)行蛾洛,document.readyState 屬性改為complete养铸,web瀏覽器觸發(fā)window對象上load事件

8.此時起,會調(diào)異步事件轧膘。

同源策略以及跨域方案

使用jsonp進(jìn)行g(shù)et方式的跨域請求钞螟,更多移步文章

設(shè)置domain實現(xiàn)跨域

默認(rèn)情況下屬性domain存放的是載入服務(wù)器的主機(jī)名,可以設(shè)置這一屬性谎碍,不過使用的字符串必須又有效的域前綴或他本身鳞滨。domain值中必須有一個點號,不能設(shè)置為頂級域名蟆淀。

如果兩個窗口包含的腳本把domain設(shè)置成相同的值太援,那么這兩個窗口不受同源策略的約束,可以互相讀取對方的屬性扳碍。

修改請求頭部

服務(wù)器用頭信息顯示的列出可以訪問的源提岔。但是該種方式由后端設(shè)置。

跨文檔消息(cross-documnet messaging )

調(diào)用window對象上的postMessage方法笋敞,可以異步傳遞消息事件到窗口的文檔里碱蒙。之后使用onmessage事件處理程序函數(shù)來處理它。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市赛惩,隨后出現(xiàn)的幾起案子哀墓,更是在濱河造成了極大的恐慌,老刑警劉巖喷兼,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件篮绰,死亡現(xiàn)場離奇詭異,居然都是意外死亡季惯,警方通過查閱死者的電腦和手機(jī)吠各,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勉抓,“玉大人贾漏,你說我怎么就攤上這事∨航睿” “怎么了纵散?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長隐圾。 經(jīng)常有香客問我伍掀,道長,這世上最難降的妖魔是什么暇藏? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任蜜笤,我火速辦了婚禮,結(jié)果婚禮上叨咖,老公的妹妹穿的比我還像新娘瘩例。我一直安慰自己啊胶,他們只是感情好甸各,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著焰坪,像睡著了一般趣倾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上某饰,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天儒恋,我揣著相機(jī)與錄音,去河邊找鬼黔漂。 笑死诫尽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的炬守。 我是一名探鬼主播牧嫉,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了酣藻?” 一聲冷哼從身側(cè)響起曹洽,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辽剧,沒想到半個月后送淆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡怕轿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年偷崩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撤卢。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡环凿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出放吩,到底是詐尸還是另有隱情智听,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布渡紫,位于F島的核電站到推,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏惕澎。R本人自食惡果不足惜莉测,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望唧喉。 院中可真熱鬧捣卤,春花似錦、人聲如沸八孝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽干跛。三九已至子姜,卻和暖如春悯森,著一層夾襖步出監(jiān)牢的瞬間假瞬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工构回, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留嘉熊,地道東北人遥赚。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像阐肤,于是被迫代替她去往敵國和親凫佛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

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