Javascript中的Bom

寫(xiě)在前面

相信學(xué)習(xí)前端的小伙伴應(yīng)該都知道Javascript可以簡(jiǎn)單的分成兩個(gè)部分领突,一個(gè)是JS基礎(chǔ)的ECMAScript和WebAPI的Dom和Bom,相信很多初學(xué)的小伙伴都對(duì)WebAPI的Dom很熟悉鱼冀,畢竟Dom的操作確實(shí)會(huì)更頻繁一些,主要是對(duì)文檔對(duì)象的操作割择;現(xiàn)對(duì)來(lái)說(shuō)立宜,而B(niǎo)om的操作會(huì)更少一些(至少我本人是這樣)冒萄。所以常常會(huì)忘記Bom的各種方法與內(nèi)容,因此橙数,寫(xiě)一篇Bom的基礎(chǔ)文章讓大家能夠參考學(xué)習(xí)同時(shí)自己也能查閱尊流;和小伙伴們共同學(xué)習(xí)進(jìn)步。

Bom

Bom定義

  • 提供了獨(dú)立于內(nèi)容而與瀏覽器窗口進(jìn)行交互的對(duì)象灯帮,Bom由一系列的對(duì)象構(gòu)成的崖技,并且每一個(gè)對(duì)象都提供了方法和屬性,由于缺乏標(biāo)準(zhǔn)施流,所以兼容有很多的問(wèn)題响疚。

window對(duì)象

  • window對(duì)象是瀏覽器的頂級(jí)對(duì)象

    • window對(duì)象是一個(gè)全局對(duì)象,定義在全局的變量瞪醋、函數(shù)都會(huì)變成window對(duì)象的屬性和方法
    • 調(diào)用它的方法的時(shí)候可以省略掉window的書(shū)寫(xiě)
  • window對(duì)象的常見(jiàn)事件

    • 窗口加載事件

      • window.onload = function() {} 或者 window.addEventListener('load',function() {})

        1. 作用:當(dāng)文檔內(nèi)容(圖像忿晕、css、html)加載完成才會(huì)執(zhí)行银受,所以可以把它放到文檔任何地方践盼,實(shí)現(xiàn)<script>的位置任意化
        2. Tip: window.onload這種寫(xiě)法是只能寫(xiě)一次,如果寫(xiě)多個(gè)后面的會(huì)覆蓋前面的onload函數(shù)宾巍,而用addEventListener就可以寫(xiě)多次‘咕幻;但是addEventListener是有兼容要求的
      • docunment.addEventListener('DOMContentLoaded',funcition() {})

        ? 1.區(qū)別:load事件是等頁(yè)面全部加載完成以后,包含頁(yè)面的圖片顶霞、iframe等等肄程;而使用DOMContentLoaded則是Dom加載完成,不包含Dom元素得加載即可運(yùn)行选浑,所以他的速度會(huì)更加快蓝厌,但是有兼容要求,ie瀏覽器要ie9以上古徒。

    • 調(diào)整窗口大小事件

      • window.onresize = function() {};或者window.addEventListener('resize',function() {})
      • 作用:只要窗口得大小發(fā)生變化拓提,每一像素就會(huì)觸發(fā)一次這個(gè)事件;可以用它和window.innerWidth(獲得當(dāng)前屏幕寬度)來(lái)完成對(duì)響應(yīng)式布局隧膘。
    • 窗口打開(kāi)

      • window.open()方法可以導(dǎo)航到一個(gè)特定的URL代态,也可以打開(kāi)一個(gè)新的瀏覽器窗口。這個(gè)方法可以接收4個(gè)參數(shù)
    • 對(duì)話框彈出

      • alert():彈出系統(tǒng)對(duì)話框通常為警告的作用疹吃,彈出的彈框只有一個(gè)確認(rèn)按鈕
      • confirm():彈出一個(gè)對(duì)話框有確認(rèn)的作用蹦疑,通常有兩個(gè)按鈕(確認(rèn)和取消)
      • prompt():彈出一個(gè)提示框,會(huì)讓用戶輸入文本互墓,包含輸入域和兩個(gè)按鈕

定時(shí)器對(duì)象

  • setTimeout(回調(diào)函數(shù)必尼,幾毫秒后執(zhí)行)
    • 由于頁(yè)面中常常會(huì)有定時(shí)器,我們經(jīng)常給定時(shí)器起名字(標(biāo)識(shí)符),為了區(qū)分每一個(gè)定時(shí)器判莉,可以在定時(shí)器執(zhí)行之前一般要清理之前的定時(shí)器豆挽,避免定時(shí)器的效果疊加造成的問(wèn)題
    • 第一個(gè)參數(shù)就是常說(shuō)的回調(diào)函數(shù),所謂的回調(diào)函數(shù)在這里簡(jiǎn)單理解就是需要一定條件才去觸發(fā)的函數(shù)券盅;比如onclick的函數(shù)也是一個(gè)回調(diào)函數(shù)
  • setInterval(回調(diào)函數(shù)帮哈,幾毫秒后執(zhí)行)
    • 這個(gè)函數(shù)和之前的setTimeout的區(qū)別就是,這個(gè)函數(shù)是隔指定的時(shí)間調(diào)用一次回調(diào)函數(shù)锰镀,而那個(gè)則是只調(diào)用一次
  • clearTimeout()/clearInterval():清理定時(shí)器娘侍,它的參數(shù)是我們給定時(shí)器起的名字,也就是定時(shí)器的ID值

location對(duì)象

  • window對(duì)象提供了loaction對(duì)象用于獲取或者設(shè)置窗體的地址

  • window對(duì)象的屬性和方法

    • location.href():獲取或設(shè)置整個(gè)URL
    • location.host():返回主機(jī)名
    • location.search():返回參數(shù)泳炉,也就是地址欄中憾筏?后面的所有內(nèi)容
    • location.port():返回端口號(hào)
    • location.assign():跟href一樣,可以跳轉(zhuǎn)頁(yè)面花鹅,但是會(huì)記錄原來(lái)的頁(yè)面氧腰,瀏覽器的回退功能可以實(shí)現(xiàn)
    • location.replace():可以跳轉(zhuǎn)但無(wú)法后退,推薦使用刨肃,跳轉(zhuǎn)的url會(huì)替換瀏覽器歷史記錄中當(dāng)前顯示的也頁(yè)面
    • location.reload():重新加載頁(yè)面
    • loaction.hash():返回哈希地址(也就是地址中#后面跟零個(gè)或者多個(gè)字符串)

history對(duì)象

  • 用于和瀏覽器的歷史記錄進(jìn)行交互古拴,包含用戶訪問(wèn)過(guò)的URL,也就是保存著用戶的上網(wǎng)歷史記錄真友,從窗口被打開(kāi)的那一刻開(kāi)始計(jì)算起黄痪。

  • 屬性和方法

    • history.back():可以后退功能
    • history.forward():可以前進(jìn)功能
    • history.go(參數(shù)):前進(jìn)或者后退的功能,參數(shù)為“1”前進(jìn)一頁(yè)盔然;參數(shù)為“-1”后退一頁(yè)
    • length屬性:保存著歷史記錄的數(shù)量桅打,這個(gè)數(shù)量包括所有的向后和向前的記錄
  • 由于是window對(duì)象的屬性所以每個(gè)瀏覽器窗口、標(biāo)簽頁(yè)乃至每個(gè)框架都有自己的history

navigator對(duì)象

  • 主要用于獲取瀏覽器的主要信息愈案,有很多的屬性油额;比較常用的有:

    屬性和方法 說(shuō)明
    userAgent 瀏覽器用戶代理字符串
    cookieEnabled 表示cookie是否啟用
    language 瀏覽器的主語(yǔ)言

Bom和Dom的區(qū)別

  1. 首先二者操作的對(duì)象不同,Dom(文檔對(duì)象模型)從翻譯我們就可以看出這是一個(gè)基于文檔對(duì)象的應(yīng)用程序接口刻帚,也就是說(shuō)我們用到的方法“存在”這個(gè)對(duì)象里面的,我們使用的時(shí)候是在調(diào)用這個(gè)對(duì)象下的方法涩嚣;舉個(gè)簡(jiǎn)單的栗子:根據(jù)ID獲取元素:Document.getElementById()崇众;從這我們就可以看出這個(gè)是基于文檔對(duì)象的。所以被用來(lái)操作文檔航厚,說(shuō)的通俗一點(diǎn)就是用來(lái)操作HTML和XML的顷歌。

    而B(niǎo)om(瀏覽器對(duì)象模型)顧名思義;就是基于瀏覽器對(duì)象的幔睬,我們上面提到的對(duì)象和方法就都是基于瀏覽器的操作眯漩。同樣我們可以從他的調(diào)用方法看出來(lái);舉個(gè)栗子:獲取地址欄地址:window.localtion.href;不過(guò)常常在我們編寫(xiě)代碼的時(shí)候是可以把window給省略的赦抖,因?yàn)槟J(rèn)會(huì)帶上window對(duì)象舱卡。

  2. 其次,二者的關(guān)系是包含的關(guān)系队萤,Docunment的對(duì)象是window對(duì)象的下的其中一個(gè)對(duì)象轮锥,從window.document就可以看出,DOM的最根本的對(duì)象是BOM的window對(duì)象的子對(duì)象要尔。

  3. Dom的標(biāo)準(zhǔn)是唯一的舍杜,遵循的是W3C的標(biāo)準(zhǔn);而B(niǎo)om的標(biāo)準(zhǔn)并不唯一赵辕,有各個(gè)瀏覽器廠商決定

Tip:每個(gè)字都是自己手敲的噢既绩,如果有錯(cuò)別字還請(qǐng)多多包涵,覺(jué)得有用的話點(diǎn)個(gè)贊支持一下吖~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末还惠,一起剝皮案震驚了整個(gè)濱河市饲握,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吸重,老刑警劉巖互拾,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異嚎幸,居然都是意外死亡颜矿,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)嫉晶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)骑疆,“玉大人,你說(shuō)我怎么就攤上這事替废」棵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵椎镣,是天一觀的道長(zhǎng)诈火。 經(jīng)常有香客問(wèn)我,道長(zhǎng)状答,這世上最難降的妖魔是什么冷守? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮惊科,結(jié)果婚禮上拍摇,老公的妹妹穿的比我還像新娘。我一直安慰自己馆截,他們只是感情好充活,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布蜂莉。 她就那樣靜靜地躺著,像睡著了一般混卵。 火紅的嫁衣襯著肌膚如雪映穗。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天淮菠,我揣著相機(jī)與錄音男公,去河邊找鬼。 笑死合陵,一個(gè)胖子當(dāng)著我的面吹牛枢赔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拥知,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼踏拜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了低剔?” 一聲冷哼從身側(cè)響起速梗,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎襟齿,沒(méi)想到半個(gè)月后姻锁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡猜欺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年位隶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片开皿。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涧黄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赋荆,到底是詐尸還是另有隱情笋妥,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布窄潭,位于F島的核電站春宣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嫉你。R本人自食惡果不足惜信认,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望均抽。 院中可真熱鬧,春花似錦其掂、人聲如沸油挥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)深寥。三九已至攘乒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惋鹅,已是汗流浹背则酝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闰集,地道東北人沽讹。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像武鲁,于是被迫代替她去往敵國(guó)和親爽雄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348