17 js12 BOM

1淡溯、BOM:瀏覽器對象模型(Browser object model),主要處理瀏覽器窗口和框架获黔,封裝了一系列與瀏覽器交互的方法和接口宾舅;其通過js來訪問、控制炊林、修改瀏覽器(準確的說是瀏覽器窗口);

DOM:封裝系列方法操作html和xml,BOM封裝系列方法來操作瀏覽器姥卢,準確的說是操作瀏覽器窗口,window表示的便是瀏覽器窗口(iframe框架引入的頁面也是窗口)渣聚,所以玩轉(zhuǎn)BOM就是玩轉(zhuǎn)window對象,window對象下有很多屬性和方法独榴;[如果聚焦到屬性,這些屬性也都是對象奕枝,也有自己的屬性和方法]

窗口:瀏覽器網(wǎng)頁窗口以及iframe引入的都稱之為窗口棺榔,iframe框架引入的網(wǎng)頁有完整的文檔結(jié)構(gòu),等同于是新的網(wǎng)頁(html,head,body都有)隘道;而可視區(qū)窗口指的是html文檔內(nèi)容呈現(xiàn)出的部分症歇;

window對象的兩層含義:(1).其表示瀏覽器窗口或框架;(2).window就是全局對象谭梗,window對象的屬性便是全局變量忘晤,例如:window.document? ------>>> document即可(window可省略);

------>>>>>>

2激捏、window對象的屬性和方法:window對象的屬性便是一系列功能的集合设塔,包含:window對象/Navigator/History/Location/Screen等;

(1).document: window對象的屬性包含了document屬性缩幸,因此通過window對象的document屬性就可以訪問壹置、檢索、修改文檔內(nèi)容與結(jié)構(gòu)表谊,document對象又是dom樹的根節(jié)點钞护;

(2).屬性和方法:

[1].window.innerWidth/Height; //?可視區(qū)寬/高:包含滾動條;clientWidth;/clientHeight;//ie9以下的屬性爆办,還有些小區(qū)別难咕,其表示的可視區(qū)寬/高不包含滾動條;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [2].pageXOffset;/pageYOffsset;可設(shè)置但不可操控(滾動條不會到達指定位置)距辆;應(yīng)用場景:圖片的懶加載(大型購物網(wǎng)站為了用戶體驗需要保證響應(yīng)迅速余佃,往往先把首屏內(nèi)容展示給用戶,剩下的內(nèi)容按需加載即可跨算;也許用戶壓根不看首屏直接搜索爆土,避免把所有內(nèi)容都加載好占用帶寬,浪費流量)诸蚕;[3].window.screenX/Y;//chrome,firefox支持步势;window.screenLeft/Top;//ie opera支持氧猬,表示的是窗口左上角在屏幕中的x/y坐標,只讀,得到數(shù)字坏瘩; screenX/Y = screenX/Y || screenLeft/Top;? ? ? ? ? ? ? ? ? ? ? ? ? [4].window.top/length/parent/self;涉及到引入iframe框架后的操作盅抚,父子域,同源策略等(iframe引入的是完整的文檔結(jié)構(gòu)倔矾,有自己的window)妄均;top:嵌套父子頁面中表示最頂層;self是拿到自身哪自;所以平時變量聲明中不要聲明var top/parent/name/self等丰包,避免沖突;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [5].window.name:窗口的名字提陶,可讀/可寫烫沙,其與頁面內(nèi)容無關(guān),只是給窗口取名字而已隙笆;

[6].setInterval();/setTimeout();/clearInterval();/clearTimeout();/scroll();scrollTo();/scrollBy();[7].open();/close();//window.open();//方法返回值為新窗口的window锌蓄;close();//關(guān)閉新打開的窗口,(不同瀏覽器兼容性有差異撑柔,一些瀏覽器可以關(guān)閉任何窗口)

[8].window系列彈窗是原生的UI部分,由于太粗糙瘸爽,日常開發(fā)中都不用原生window的彈窗;

window.alert("hello"+\n+"world");//報錯铅忿;window.alert("hello+\n+world");//hello+?換行 +world;? ? ? ? ? window.alert("hello"+"\n"+"world");//?帶有折行的對話框

------->>>>>window對象有很多屬性剪决,單獨就屬性來探討,其是對象有獨立的屬性和方法檀训;

(3).navigator對象:瀏覽器客戶端的信息(引用的Navigator對象柑潦,其是構(gòu)造函數(shù),系統(tǒng)用來構(gòu)造,不允許自定義) [平時談到的Navigator對象有些不嚴格]

navigator.appVersion;/ navigator.userAgent,第二個更加全面一些峻凫,包含瀏覽器的信息渗鬼;應(yīng)用場景:開發(fā)中為了兼容不同的瀏覽器往往需要開發(fā)多個版本的同一網(wǎng)頁,然后將其部署到服務(wù)器中荧琼,當(dāng)用戶通過瀏覽器發(fā)出網(wǎng)絡(luò)請求的過程中譬胎,實際會將所使用的瀏覽器信息也就是navigator.userAgent上的信息,和http:協(xié)議一起發(fā)送給服務(wù)器(當(dāng)作報文)命锄,然后服務(wù)器根據(jù)瀏覽器的信息返回相應(yīng)的網(wǎng)頁堰乔;上述為后臺應(yīng)用場景,瀏覽器端也有很多應(yīng)用場景脐恩,例如通過其來判斷所處的平臺是瀏覽器端還是移動端镐侯,提取有效數(shù)據(jù);

navigator.cookieEnabled//返回是否啟用cookie的布爾值驶冒;(cookie就是個文件苟翻,里面保存的用戶名/密碼搭伤,后端有相應(yīng)的時間機制,若是幾小時內(nèi)登錄便不需要再次輸入用戶名和密碼)

navigator.onLine//返回系統(tǒng)是否脫機(沒聯(lián)網(wǎng))的布爾值;(應(yīng)用場景:若是沒有脫機袜瞬,則進行網(wǎng)絡(luò)請求最新的網(wǎng)頁內(nèi)容,若是脫機身堡,則返回緩存的網(wǎng)頁內(nèi)容邓尤,其也是離線緩存的依據(jù))

(4).history對象:瀏覽器窗口中訪問過的URL;(html5對其進行了很多補充)

history.length;//訪問過的URL數(shù)量;history.back();//后退贴谎;history.forward();//前一個汞扎;history.go();//參數(shù)為數(shù)字(正負皆可),加載到某個具體的頁面擅这;[back();和go();無參數(shù),目前瀏覽器也支持填入?yún)?shù)加載到某頁面澈魄,前進后退按鈕底層調(diào)用的便是該方法]

(5).location對象:當(dāng)前URL的信息;屬性都是可讀可寫仲翎;

https://www.baidu.com/s?wd=URL&rsv_spt=1&rsv_iqid=0xd61dd2b20002cb56#dd? ? ? ? ? ? ? ? ? ? ? ? ? url:統(tǒng)一資源定位器痹扇;協(xié)議名;域名(www:baidu.com:443),端口號可省略溯香,https:443,http:80;? ? ? ? ? ? ? 主機名:物理地址鲫构; /s:?路徑; ?以及后面的&,=都是參數(shù)(經(jīng)過編碼后的參數(shù));? ?#:錨點玫坛;

location.href;//返回完整的URL结笨;location.hash;//返回從#開始的值;location.host;//返回主機名和當(dāng)前URL的端口號湿镀;location.hostname;//返回主機名炕吸;location.pathname;//URL中的路徑部分;location.port;//返回端口號勉痴;location.protocol;//返回協(xié)議名赫模;location.search;//從?開始的URL部分,查詢蚀腿;

location.assign();//加載新文檔嘴瓤;location.reload();//重新加載文檔,參數(shù)選填莉钙,若是不填或者是填false則取消瀏覽器緩存的文檔廓脆;location.replace();//用新文檔替換當(dāng)前文檔(沒有歷史記錄,很少用到)

可讀可寫

補充:操作過程中頁面跳轉(zhuǎn)或刷新磁玉,若只是修改錨點頁面并不會刷新(特性現(xiàn)象)停忿,URL任何部分的修改整個地址欄便產(chǎn)生了變化,由于錨點的特性蚊伞,如今開發(fā)更傾向于用戶體驗感更好的單頁面應(yīng)用(vue框架)席赂,錨點的改變代表著路由的變化吮铭;(錨點最原生的應(yīng)用是:點擊固定的側(cè)邊欄跳轉(zhuǎn)到相應(yīng)的位置,如今單頁面應(yīng)用屬于錨點的高級應(yīng)用)

(6).screen對象:客戶端顯示屏幕的信息颅停;js可以利用這些信息來優(yōu)化它們的輸出谓晌,以達到用戶的顯示要求,一個程序可以根據(jù)顯示器的尺寸來選擇使用大圖像還是使用小圖像癞揉,它還可以根據(jù)顯示器的顏色深度選擇使用16位色還是使用8位色的圖形纸肉;js程序還可以根據(jù)屏幕尺寸的信息將新的瀏覽器窗口定位在屏幕中間;[根據(jù)屏幕信息作出相應(yīng)的改變]

screen.width/height;//返回顯示器屏幕的寬/高喊熟;包含任務(wù)欄柏肪;

screen.availWidth/availHeight;//返回顯示器屏幕的寬/高;(除去window的任務(wù)欄)

【注:使用對象就是小寫的形式芥牌,大寫的即為構(gòu)造函數(shù)的函數(shù)名烦味,要加以區(qū)分,window/Window】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末壁拉,一起剝皮案震驚了整個濱河市谬俄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弃理,老刑警劉巖凤瘦,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異案铺,居然都是意外死亡蔬芥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門控汉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笔诵,“玉大人,你說我怎么就攤上這事姑子『跣觯” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵街佑,是天一觀的道長谢翎。 經(jīng)常有香客問我,道長沐旨,這世上最難降的妖魔是什么森逮? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮磁携,結(jié)果婚禮上褒侧,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好闷供,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布烟央。 她就那樣靜靜地躺著,像睡著了一般歪脏。 火紅的嫁衣襯著肌膚如雪疑俭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天婿失,我揣著相機與錄音怠硼,去河邊找鬼。 笑死移怯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的这难。 我是一名探鬼主播舟误,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼姻乓!你這毒婦竟也來了嵌溢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蹋岩,失蹤者是張志新(化名)和其女友劉穎赖草,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剪个,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡秧骑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扣囊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乎折。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖侵歇,靈堂內(nèi)的尸體忽然破棺而出骂澄,到底是詐尸還是另有隱情,我是刑警寧澤惕虑,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布坟冲,位于F島的核電站,受9級特大地震影響溃蔫,放射性物質(zhì)發(fā)生泄漏健提。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一伟叛、第九天 我趴在偏房一處隱蔽的房頂上張望矩桂。 院中可真熱鬧,春花似錦、人聲如沸侄榴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽癞蚕。三九已至蕊爵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桦山,已是汗流浹背攒射。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留恒水,地道東北人会放。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像钉凌,于是被迫代替她去往敵國和親咧最。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

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