BOM

window作為BOM的核心(頂層對(duì)象)马胧,表示瀏覽器窗口以及頁(yè)面的可視區(qū)域僵朗。同時(shí)席纽,window對(duì)象也是ECMAScript中的Global對(duì)象。因此撞蚕,所有的全局變量润梯,函數(shù)都是window的屬性和方法。而且原生的構(gòu)造函數(shù)比如Math甥厦、Date纺铭、Function等都存在于它的命名空間下。

只介紹實(shí)際開(kāi)發(fā)中常用的以及需要注意的點(diǎn):

一刀疙、window對(duì)象

1舶赔、全局作用域中的變量、函數(shù)都會(huì)成為window的屬性和方法谦秧。
var num = 12;
alert(window.num); // 12
2竟纳、全局變量不能通過(guò)delete操作符刪除,直接在window對(duì)象上定義的屬性則可以刪除疚鲤。
var num = 12;
window.color = 'red';

// 在IE<9中會(huì)拋出錯(cuò)誤
delete window.num;
console.log(window.num); // 12

delete window.color;
console.log(window.color); // undefined
3锥累、導(dǎo)航和打開(kāi)窗口
window.open() 可以導(dǎo)航到新的URL,同時(shí)會(huì)打開(kāi)新的窗口集歇。

二桶略、location對(duì)象

location對(duì)象是用的最多的BOM對(duì)象之一,它很特別诲宇,既是window的屬性际歼,又是document的屬性,所以姑蓝,window.location和document.location引用的是同一個(gè)對(duì)象的鹅心;提供了當(dāng)前窗口中加載的文檔的有關(guān)信息和一些導(dǎo)航功能。

location對(duì)象可以將URL解析為獨(dú)立的片段纺荧。

屬性名 demo 說(shuō)明
hash #topic URL中的hash
host www.xxx.com:80 主機(jī)名和端口
hostname www.xxx.com 主機(jī)名
href https://xxx.baidu.com 完整的URL
pathname /topic/ URL中的目錄和文件名
port 8080 端口號(hào)
protocol http 協(xié)議
search ?type=1 查詢(xún)字符串
1巴帮、解析查詢(xún)字符串參數(shù)方法可以查看
2、位置操作

打開(kāi)新的URL虐秋, 以下三種方法效果是一樣的榕茧。

window.location = 'www.xxx.com' 
location.href = 'www.xxx.com'
location.assign('www.xxx.com')

修改location對(duì)象的屬性,可以改變當(dāng)前加載的頁(yè)面客给。

   // 頁(yè)面不會(huì)重新加載
   url改為 www.baidu.com#topic
   location.hash = '#topic';

   url改為 www.baidu.com?type=1
   location.search = '?type=1';

   url改為 www.xxx.com
   location.hostname = 'www.xxx.com';

   url改為 www.baidu.com/topic/
   location.pathname = 'topic'

   url改為 www.baidu.com:8080
   location.port = '8080'

以上方式用押,除了hash外,都會(huì)重新加載頁(yè)面靶剑,并且會(huì)在瀏覽器中生成新的記錄蜻拨。

location.replace()方法接收一個(gè)參數(shù)池充,也就是要導(dǎo)航到的URL,該會(huì)替換當(dāng)前的URL缎讼,不會(huì)在瀏覽器生成歷史記錄收夸。
location.reload()方法會(huì)重新加載當(dāng)前頁(yè)面。如果當(dāng)前頁(yè)面沒(méi)有改變過(guò)血崭,若不傳遞參數(shù)卧惜,則會(huì)從瀏覽器緩存中加載,若添加true參數(shù)夹纫,則會(huì)從服務(wù)器加載咽瓷。

三、navigator 對(duì)象

1舰讹、navigator 對(duì)象一般是用來(lái)識(shí)別客戶(hù)端瀏覽器的茅姜。最常用的就是userAgent 屬性。用來(lái)檢測(cè)瀏覽器相關(guān)的信息月匣。比如
navigator.userAgent
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
2钻洒、 檢測(cè)插件

檢測(cè)瀏覽器插件。對(duì)于非IE 使用plugins屬性锄开,值為數(shù)組航唆。數(shù)組每一項(xiàng)為一個(gè)插件實(shí)例,每個(gè)實(shí)例包括name院刁、description糯钙、filename length⊥诵龋可以通過(guò)name來(lái)檢測(cè)瀏覽器是否有某個(gè)插件任岸。

  • 非IE檢測(cè)
function hasPlugin(name) {
    name = name.toLowerCase();
    for (var i = 0; i < navigator.plugins.length; i++) {
        if (~navigator.plugins[i].name.toLowerCase().indexOf(name)) {
            return true;
        }
    }
    return false;
} 
  • 檢測(cè)IE唯一的方式是使用專(zhuān)有的ActiveXObject()類(lèi)型,并創(chuàng)建一個(gè)特定的實(shí)例狡刘,使用COM對(duì)象的方式作為唯一標(biāo)識(shí)符享潜。檢測(cè)插件,必須知道該插件的COM標(biāo)識(shí)符嗅蔬。
function hasPluginForIE(name) {
    try {
        new ActiveXObject(name);
        return true
    } catch(e) {
        return false;
    }
}

之所以使用try/catch是因?yàn)槿绻麑?shí)例化不成功就會(huì)拋出錯(cuò)誤剑按。

四、history 對(duì)象

go()方法澜术,接收一個(gè)參數(shù)艺蝴。

1、參數(shù)如果是整數(shù)鸟废,正數(shù)則表示前進(jìn)猜敢,向前跳轉(zhuǎn);負(fù)數(shù)表示后退,向后跳轉(zhuǎn)缩擂。
2鼠冕、參數(shù)如果是字符串,則會(huì)跳轉(zhuǎn)到歷史記錄中包含該字符串的最近位置的URL胯盯。
history.go(2)  前進(jìn)兩個(gè)頁(yè)面
history.go(-1) 后退一個(gè)頁(yè)面
還可以使用back()和forward()代替懈费。

BOM中還有screen對(duì)象,保存著和客戶(hù)端顯示器有關(guān)的信息博脑,一般用于站點(diǎn)的分析憎乙,這里就不擴(kuò)展了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末趋厉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子胶坠,更是在濱河造成了極大的恐慌君账,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沈善,死亡現(xiàn)場(chǎng)離奇詭異乡数,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)闻牡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)净赴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人罩润,你說(shuō)我怎么就攤上這事玖翅。” “怎么了割以?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵金度,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我严沥,道長(zhǎng)猜极,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任消玄,我火速辦了婚禮跟伏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翩瓜。我一直安慰自己受扳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布兔跌。 她就那樣靜靜地躺著辞色,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上相满,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天层亿,我揣著相機(jī)與錄音,去河邊找鬼立美。 笑死匿又,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的建蹄。 我是一名探鬼主播碌更,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼洞慎!你這毒婦竟也來(lái)了痛单?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤劲腿,失蹤者是張志新(化名)和其女友劉穎旭绒,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體焦人,經(jīng)...
    沈念sama閱讀 44,110評(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,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖矿辽,靈堂內(nèi)的尸體忽然破棺而出丹允,到底是詐尸還是另有隱情,我是刑警寧澤袋倔,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布嫌松,位于F島的核電站,受9級(jí)特大地震影響奕污,放射性物質(zhì)發(fā)生泄漏萎羔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一碳默、第九天 我趴在偏房一處隱蔽的房頂上張望贾陷。 院中可真熱鬧,春花似錦嘱根、人聲如沸髓废。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)慌洪。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冈爹,已是汗流浹背涌攻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留频伤,地道東北人恳谎。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像憋肖,于是被迫代替她去往敵國(guó)和親因痛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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