js5-bom

什么是BOM

BOM:Browser Object Model 是瀏覽器對象模型己沛,瀏覽器對象模型提供了獨立與內(nèi)容的、可以與瀏覽器窗口進(jìn)行互動的對象結(jié)構(gòu),BOM由多個對象構(gòu)成迟杂,其中代表瀏覽器窗口的window對象是BOM的頂層對象棺禾,其他對象都是該對象的子對象缀蹄。

目前主流瀏覽器介紹

IE——11: 國內(nèi)用得最多的IE瀏覽器,歷來對W3C標(biāo)準(zhǔn)支持差膘婶。從IE10開始支持ES6標(biāo)準(zhǔn)缺前;

Sarafi:Apple的Mac系統(tǒng)自帶的基于Webkit內(nèi)核的瀏覽器,從OS X 10.7 Lion自帶的6.1版本開始支持ES6悬襟,目前最新的OS X 10.10 Yosemite自帶的Sarafi版本是8.x衅码,早已支持ES6;

Firefox:Mozilla自己研制的Gecko內(nèi)核和JavaScript引擎OdinMonkey脊岳。早期的Firefox按版本發(fā)布逝段,后來終于聰明地學(xué)習(xí)Chrome的做法進(jìn)行自升級,時刻保持最新割捅;

移動設(shè)備上目前iOS和Android兩大陣營分別主要使用Apple的Safari和Google的Chrome奶躯,由于兩者都是Webkit核心,結(jié)果HTML5首先在手機(jī)上全面普及(桌面絕對是Microsoft拖了后腿)亿驾,對JavaScript的標(biāo)準(zhǔn)支持也很好嘹黔,最新版本均支持ES6。

這里為什么沒有說到360瀏覽器莫瞬、搜狗瀏覽器呢儡蔓?其實這一類瀏覽器只是在以上列舉出來的瀏覽器的內(nèi)核基礎(chǔ)上醉锄,換了一個包裝,添加了一些個性功能而已浙值,本質(zhì)上并沒有什么區(qū)別恳不。

可以操作的BOM對象

window對象

所有瀏覽器都支持 window 對象。它表示瀏覽器窗口开呐。

所有 JavaScript 全局對象烟勋、函數(shù)以及變量均自動成為 window 對象的成員。

全局變量是 window 對象的屬性筐付。

全局函數(shù)是 window 對象的方法卵惦。

甚至 HTML DOM 的 document 也是 window 對象的屬性之一:

window.document.getElementById("header");

與此相同:

document.getElementById("header");

window尺寸

有三種方法能夠確定瀏覽器窗口的尺寸(瀏覽器的視口,不包括工具欄和滾動條)瓦戚。

對于Internet Explorer沮尿、Chrome、Firefox较解、Opera 以及 Safari:

window.innerHeight - 瀏覽器窗口的內(nèi)部高度

window.innerWidth - 瀏覽器窗口的內(nèi)部寬度

對于 Internet Explorer 8畜疾、7、6印衔、5:

document.documentElement.clientHeight

document.documentElement.clientWidth

或者

document.body.clientHeight

document.body.clientWidth

實用的 JavaScript 方案(涵蓋所有瀏覽器):

var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;

var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

x=document.getElementById("demo");

x.innerHTML="瀏覽器的內(nèi)部窗口寬度:" + w + "啡捶,高度:" + h + "。"

該例顯示瀏覽器窗口的高度和寬度:(不包括工具欄/滾動條)

除此之外奸焙,還有一個outerWidth和outerHeight屬性瞎暑,可以獲取瀏覽器窗口的整個寬高。

其他操作window方法(不常用)

window.open() - 打開新窗口

window.close() - 關(guān)閉當(dāng)前窗口

window.moveTo() - 移動當(dāng)前窗口

window.resizeTo() - 調(diào)整當(dāng)前窗口的尺寸

navigator

navigator對象表示瀏覽器的信息与帆,最常用的屬性包括:

navigator.appName:瀏覽器名稱了赌;

navigator.appVersion:瀏覽器版本;

navigator.language:瀏覽器設(shè)置的語言玄糟;

navigator.platform:操作系統(tǒng)類型勿她;

navigator.userAgent:瀏覽器設(shè)定的User-Agent字符串。

window.navigator 對象在編寫時可不使用 window 這個前綴茶凳。

示例:

txt = "

Browser CodeName: " + navigator.appCodeName + "

";

txt+= "

Browser Name: " + navigator.appName + "

";

txt+= "

Browser Version: " + navigator.appVersion + "

";

txt+= "

Cookies Enabled: " + navigator.cookieEnabled + "

";

txt+= "

Platform: " + navigator.platform + "

";

txt+= "

User-agent header: " + navigator.userAgent + "

";

txt+= "

User-agent language: " + navigator.systemLanguage + "

";

document.getElementById("example").innerHTML=txt;

注意

來自 navigator 對象的信息具有誤導(dǎo)性嫂拴,不應(yīng)該被用于檢測瀏覽器版本,這是因為:

navigator 數(shù)據(jù)可被瀏覽器使用者更改

瀏覽器無法報告晚于瀏覽器發(fā)布的新操作系統(tǒng)

screen

screen對象表示屏幕的信息贮喧,常用的屬性有:

screen.width:屏幕寬度筒狠,以像素為單位;

screen.availWidth:屏幕的可用寬度箱沦,以像素為單位

screen.height:屏幕高度辩恼,以像素為單位;

screen.availHeight:屏幕的可用高度,以像素為單位

screen.colorDepth:返回顏色位數(shù)灶伊,如8疆前、16、24聘萨。

window.screen 對象在編寫時可以不使用 window 這個前綴竹椒。

document.write( "屏幕寬度:"+screen.width+"px
" );

document.write( "屏幕高度:"+screen.height+"px
" );

document.write( "屏幕可用寬度:"+screen.availWidth+"px
" );

document.write( "屏幕可用高度:"+screen.availHeight+"px" );

Location

location對象表示當(dāng)前頁面的URL信息。例如米辐,一個完整的URL:

http://www.example.com:8080/path/index.html?a=1&b=2#TOP

可以用location.href獲取:

document.write(location.href);

要獲得URL各個部分的值胸完,可以這么寫:

location.protocol; // 'http'

location.host; // 'www.example.com'

location.port; // '8080'

location.pathname; // '/path/index.html'

location.search; // '?a=1&b=2'

location.hash; // 'TOP'

要加載一個新頁面,可以調(diào)用location.assign()翘贮。如果要重新加載當(dāng)前頁面赊窥,調(diào)用location.reload()方法非常方便。

示例:加載一個新頁面

function newDoc()

{

window.location.assign("http://www.w3school.com.cn")

}

History

history對象保存了瀏覽器的歷史記錄狸页,JavaScript可以調(diào)用history對象的back()或forward ()锨能,相當(dāng)于用戶點擊了瀏覽器的“后退”或“前進(jìn)”按鈕。

History Back

history.back() 方法加載歷史列表中的前一個 URL芍耘。

這與在瀏覽器中點擊后退按鈕是相同的:

function goBack()

? {

? window.history.back()

? }

History Forward

history forward() 方法加載歷史列表中的下一個 URL址遇。

這與在瀏覽器中點擊前進(jìn)按鈕是相同的:

function goForward()

? {

? window.history.forward()

? }

注意

這個對象屬于歷史遺留對象,對于現(xiàn)代Web頁面來說齿穗,由于大量使用AJAX和頁面交互傲隶,簡單粗暴地調(diào)用history.back()可能會讓用戶感到非常憤怒。

新手開始設(shè)計Web頁面時喜歡在登錄頁登錄成功時調(diào)用history.back()窃页,試圖回到登錄前的頁面。這是一種錯誤的方法复濒。

任何情況脖卖,你都不應(yīng)該使用history這個對象了。

拓展

系統(tǒng)對話框

alert()警告框巧颈,沒有返回值

confirm('提問的內(nèi)容')返回boolean

prompt(),輸入框,返回字符串或null

window對象常用事件

onload:當(dāng)頁面加載時

onscroll:當(dāng)頁面滾動時

onresize:頁面重新定義大小時

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末畦木,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子砸泛,更是在濱河造成了極大的恐慌十籍,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唇礁,死亡現(xiàn)場離奇詭異勾栗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)盏筐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門围俘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事界牡〔炯牛” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵宿亡,是天一觀的道長常遂。 經(jīng)常有香客問我,道長挽荠,這世上最難降的妖魔是什么克胳? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮坤按,結(jié)果婚禮上毯欣,老公的妹妹穿的比我還像新娘。我一直安慰自己臭脓,他們只是感情好酗钞,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著来累,像睡著了一般砚作。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嘹锁,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天葫录,我揣著相機(jī)與錄音,去河邊找鬼领猾。 笑死米同,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的摔竿。 我是一名探鬼主播面粮,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼继低!你這毒婦竟也來了熬苍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤袁翁,失蹤者是張志新(化名)和其女友劉穎柴底,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粱胜,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡柄驻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了年柠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凿歼。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡褪迟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出答憔,到底是詐尸還是另有隱情味赃,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布虐拓,位于F島的核電站心俗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蓉驹。R本人自食惡果不足惜城榛,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望态兴。 院中可真熱鬧狠持,春花似錦、人聲如沸瞻润。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绍撞。三九已至正勒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間傻铣,已是汗流浹背章贞。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留非洲,地道東北人鸭限。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像两踏,于是被迫代替她去往敵國和親里覆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

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

  • 什么是BOM BOM:Browser Object Model 是瀏覽器對象模型缆瓣,瀏覽器對象模型提供了獨立與內(nèi)容的...
    源大俠閱讀 623評論 0 0
  • 一、JS前言 (1)認(rèn)識JS 也許你已經(jīng)了解HTML標(biāo)記(也稱為結(jié)構(gòu))虹统,知道了CSS樣式(也稱為表示)弓坞,會使用HT...
    凜0_0閱讀 2,755評論 0 8
  • JS Window-瀏覽器對象模型 瀏覽器對象模型(BOM)使JS有能力與瀏覽器對話 由于現(xiàn)代瀏覽器幾乎實現(xiàn)了JS...
    figure_ai閱讀 1,275評論 0 2
  • 你是我私密的儀式 在天黑的時候候 小心翼翼 謾罵、咒語和罪行车荔,世界給了你的 和我沒有半點干系 是的渡冻,我是你虔誠的信...
    景大別閱讀 267評論 0 2
  • 女孩選擇做行銷工作,其實超歌,也沒什么砍艾?沒做出業(yè)績,我什么都不是巍举!既然選擇了這份工作脆荷,我就得和男生一樣努力吃苦,思考總...
    靜樂谷主閱讀 143評論 0 0