BOM

BOM 是 browser object model 的縮寫, 簡稱瀏覽器對象模型欧啤。 主要處理瀏覽器窗口和框架,
描述了與瀏覽器進行交互的方法和接口, 可以對瀏覽器窗口進行訪問和操作末盔, 譬如可以彈出
新的窗口, 回退歷史記錄座慰, 獲取 url……

BOM 與 DOM 的關(guān)系

  1. javacsript 是通過訪問 BOM 對象來訪問陨舱、 控制、 修改瀏覽器
  2. BOM 的 window 包含了 document版仔, 因此通過 window 對象的 document 屬性就可以訪問游盲、
    檢索、 修改文檔內(nèi)容與結(jié)構(gòu)蛮粮。
  3. document 對象又是 DOM 模型的根節(jié)點益缎。

因此, BOM 包含了 DOM然想, 瀏覽器提供出來給予訪問的是 BOM 對象莺奔, 從 BOM 對象再訪
問到 DOM 對象, 從而 js 可以操作瀏覽器以及瀏覽器讀取到的文檔

BOM 對象包含哪些內(nèi)容又沾?

  • Window JavaScript 層級中的頂層對象弊仪, 表示瀏覽器窗口。
  • Navigator 包含客戶端瀏覽器的信息杖刷。
  • History 包含了瀏覽器窗口訪問過的 URL励饵。
  • Location 包含了當(dāng)前 URL 的信息。
  • Screen 包含客戶端顯示屏的信息滑燃。

History 對象

History 對象包含用戶(在瀏覽器窗口中) 訪問過的 URL

方法/屬性 描述
length 返回瀏覽器歷史列表中的 URL 數(shù)量役听。
back() 加載 history 列表中的前一個 URL。
forward() 加載 history 列表中的下一個 URL。
go() 加載 history 列表中的某個具體頁面

Location 對象

Location 對象包含有關(guān)當(dāng)前 URL 的信息典予。

屬性 描述
hash 設(shè)置或返回從井號 (#) 開始的 URL(錨) 甜滨。
host 設(shè)置或返回主機名和當(dāng)前 URL 的端口號。
hostname 設(shè)置或返回當(dāng)前 URL 的主機名瘤袖。
href 設(shè)置或返回完整的 URL衣摩。
pathname 設(shè)置或返回當(dāng)前 URL 的路徑部分。
port 設(shè)置或返回當(dāng)前 URL 的端口號捂敌。
protocol 設(shè)置或返回當(dāng)前 URL 的協(xié)議艾扮。
search 置或返回從問號 (?) 開始的 URL(查詢部分) 。
方法 描述
assign() 加載新的文檔占婉。
reload(‘force’) 重新加載當(dāng)前文檔泡嘴。參數(shù)可選,不填或填 false 則取瀏覽器緩存的文檔
replace() 用新的文檔替換當(dāng)前文檔逆济。

Window 對象

Window 對象表示一個瀏覽器窗口或一個框架酌予。 在客戶端 JavaScript 中, Window 對象
是全局對象奖慌,所有的表達式都在當(dāng)前的環(huán)境中計算抛虫。 例如,可以只寫 document简僧, 而
不必寫 window.document莱褒。

屬性 描述
closed 返回窗口是否已被關(guān)閉。
defaultStatus 設(shè)置或返回窗口狀態(tài)欄中的默認文本涎劈。 (僅 Opera 支持)
document 對 Document 對象的只讀引用广凸。 請參閱 Document 對象。
history 對 History 對象的只讀引用蛛枚。 請參數(shù) History 對象谅海。
innerheight 返回窗口的文檔顯示區(qū)的高度。
innerwidth 返回窗口的文檔顯示區(qū)的寬度蹦浦。
length 設(shè)置或返回窗口中的框架數(shù)量扭吁。
location 用于窗口或框架的 Location 對象。 請參閱 Location 對象盲镶。
name 設(shè)置或返回窗口的名稱侥袜。
Navigator 對 Navigator 對象的只讀引用。 請參數(shù) Navigator 對象溉贿。
opener 返回對創(chuàng)建此窗口的窗口的引用枫吧。
outerheight 返回窗口的外部高度。
outerwidth 返回窗口的外部寬度宇色。
pageXOffset 設(shè)置或返回當(dāng)前頁面相對于窗口顯示區(qū)左上角的 X 位置九杂。
pageYOffset 設(shè)置或返回當(dāng)前頁面相對于窗口顯示區(qū)左上角的 Y 位置颁湖。
parent 返回父窗口。
Screen 對 Screen 對象的只讀引用例隆。 請參數(shù) Screen 對象甥捺。
self 返回對當(dāng)前窗口的引用。 等價于 Window 屬性镀层。
status 設(shè)置窗口狀態(tài)欄的文本镰禾。 (默認只支持 Opera)
top 返回最頂層的先輩窗口。
window window 屬性等價于 self 屬性唱逢, 它包含了對窗口自身的引用羡微。
screenLeft
screenTop
screenX
screenY
只讀整數(shù)。聲明了窗口的左上角在屏幕上的的 x 坐標和 y 坐標惶我。 IE、 Safari博投、 Chrome 和 Opera 支持 screenLeft 和 screenTop绸贡, 而 Chrome、 Firefox 和 Safari 支持 screenX 和 screenY毅哗。
方法 描述
alert() 顯示帶有一段消息和一個確認按鈕的警告框听怕。
blur() 把鍵盤焦點從頂層窗口移開。
confirm() 顯示帶有一段消息以及確認按鈕和取消按鈕的對話框虑绵。
createPopup() 創(chuàng)建一個彈出窗口尿瞭。 只有 ie 支持(不包括 ie11)
focus() 把鍵盤焦點給予一個窗口。
moveBy() 可相對窗口的當(dāng)前坐標把它移動指定的像素翅睛。
moveTo() 把窗口的左上角移動到一個指定的坐標声搁。
open() 打開一個新的瀏覽器窗口或查找一個已命名的窗口。 window.open(URL,name,features,replace)
print() 打印當(dāng)前窗口的內(nèi)容捕发。
prompt() 顯示可提示用戶輸入的對話框疏旨。
resizeBy() 按照指定的像素調(diào)整窗口的大小。
resizeTo() 把窗口的大小調(diào)整到指定的寬度和高度扎酷。
scrollBy() 按照指定的像素值來滾動內(nèi)容檐涝。
scrollTo() 把內(nèi)容滾動到指定的坐標。
setInterval() 按照指定的周期(以毫秒計) 來調(diào)用函數(shù)或計算表達式法挨。
setTimeout() 在指定的毫秒數(shù)后調(diào)用函數(shù)或計算表達式谁榜。
clearInterval() 取消由 setInterval() 設(shè)置的 timeout。
clearTimeout() 取消由 setTimeout() 方法設(shè)置的 timeout凡纳。close() 關(guān)閉瀏覽器窗口

Navigator 對象

Navigator 對象包含的屬性描述了正在使用的瀏覽器窃植。 可以使用這些屬性進行平臺專用的配置。 雖然這個對象的名稱顯而易見的是 Netscape 的 Navigator 瀏覽器荐糜, 但其他實現(xiàn)了 JavaScript 的瀏覽器也支持這個對象撕瞧。

屬性 描述
appCodeName 返回瀏覽器的代碼名陵叽。 以 Netscape 代碼為基礎(chǔ)的瀏覽器中, 它的值是 "Mozilla"丛版。Microsoft 也是
appMinorVersion 返回瀏覽器的次級版本巩掺。 (IE4、 Opera 支持)
appName 返回瀏覽器的名稱页畦。
appVersion 返回瀏覽器的平臺和版本信息胖替。
browserLanguage 返回當(dāng)前瀏覽器的語言。 (IE 和 Opera 支持)cookieEnabled 返回指明瀏覽器中是否啟用 cookie 的布爾值豫缨。
cpuClass 返回瀏覽器系統(tǒng)的 CPU 等級独令。 (IE 支持)
onLine 返回指明系統(tǒng)是否處于脫機模式的布爾值。
platform 返回運行瀏覽器的操作系統(tǒng)平臺好芭。
systemLanguage 返回當(dāng)前操作系統(tǒng)的默認語言燃箭。 (IE 支持)
userAgent 返回由客戶機發(fā)送服務(wù)器的 user-agent 頭部的值。
userLanguage 返回操作系統(tǒng)設(shè)定的自然語言舍败。 (IE 和 Opera 支持)
plugins 返回包含客戶端安裝的所有插件的數(shù)組
方法 描述
javaEnabled() 規(guī)定瀏覽器是否支持并啟用了 Java招狸。
taintEnabled() 規(guī)定瀏覽器是否啟用數(shù)據(jù)污點 (data tainting)。

Screen 對象

Screen 對象包含有關(guān)客戶端顯示屏幕的信息邻薯。 每個 Window 對象的 screen 屬性都引用一個 Screen 對象裙戏。 Screen 對象中存放著有關(guān)顯示瀏覽器屏幕的信息。 JavaScript 程序?qū)⒗眠@些信息來優(yōu)化它們的輸出厕诡, 以達到用戶的顯示要求累榜。 例如,一個程序可以根據(jù)顯示器的尺寸選擇使用大圖像還是使用小圖像灵嫌,它還可以根據(jù)顯示器的顏色深度選擇使用 16 位色還是使用 8 位色的圖形壹罚。 另外,JavaScript 程序還能根有關(guān)屏幕尺寸的信息將新的瀏覽器窗口定位在屏幕中間寿羞。

屬性 描述
availHeight 返回顯示屏幕的高度 (除 Windows 任務(wù)欄之外)渔嚷。
availWidth 返回顯示屏幕的寬度 (除 Windows 任務(wù)欄之外)。
bufferDepth 設(shè)置或返回調(diào)色板的比特深度稠曼。 (僅 IE 支持)colorDepth 返回目標設(shè)備或緩沖器上的調(diào)色板的比特深度形病。
deviceXDPI 返回顯示屏幕的每英寸水平點數(shù)。 (僅 IE 支持)
deviceYDPI 返回顯示屏幕的每英寸垂直點數(shù)霞幅。 (僅 IE 支持)
fontSmoothingEnabled 返回用戶是否在顯示控制面板中啟用了字體平滑漠吻。 (僅 IE 支持)
height 返回顯示屏幕的高度。
logicalXDPI 返回顯示屏幕每英寸的水平方向的常規(guī)點數(shù)司恳。 (僅 IE 支持)
logicalYDPI 返回顯示屏幕每英寸的垂直方向的常規(guī)點數(shù)途乃。 (僅 IE 支持)
pixelDepth 返回顯示屏幕的顏色分辨率(比特每像素) 。
updateInterval 設(shè)置或返回屏幕的刷新率扔傅。 (僅 IE11 以下支持)
width 返回顯示器屏幕的寬度耍共。

檢測瀏覽器版本版本有哪些方式烫饼?

  • 根據(jù) navigator.userAgent // UA.toLowerCase().indexOf('chrome')
  • 根據(jù) window 對象的成員 // 'ActiveXObject' in window

offsetWidth/offsetHeight,clientWidth/clientHeight 與 scrollWidth/scrollHeight 的區(qū)別

  • offsetWidth/offsetHeight 返回值包含 content + padding + border,效果與 e.getBoundingClientRect()相同
  • clientWidth/clientHeight 返回值只包含 content + padding试读,如果有滾動條杠纵,也不包含滾動條
  • scrollWidth/scrollHeight 返回值包含 content + padding + 溢出內(nèi)容的尺寸
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市钩骇,隨后出現(xiàn)的幾起案子比藻,更是在濱河造成了極大的恐慌,老刑警劉巖倘屹,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件银亲,死亡現(xiàn)場離奇詭異,居然都是意外死亡纽匙,警方通過查閱死者的電腦和手機务蝠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烛缔,“玉大人馏段,你說我怎么就攤上這事×λ耄” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵气嫁,是天一觀的道長当窗。 經(jīng)常有香客問我,道長寸宵,這世上最難降的妖魔是什么崖面? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮梯影,結(jié)果婚禮上巫员,老公的妹妹穿的比我還像新娘。我一直安慰自己甲棍,他們只是感情好简识,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著感猛,像睡著了一般七扰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陪白,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天颈走,我揣著相機與錄音,去河邊找鬼咱士。 笑死立由,一個胖子當(dāng)著我的面吹牛轧钓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锐膜,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼毕箍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了枣耀?” 一聲冷哼從身側(cè)響起吆寨,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裙秋,沒想到半個月后桥狡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡颅围,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年伟葫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片院促。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡筏养,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出常拓,到底是詐尸還是另有隱情渐溶,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布弄抬,位于F島的核電站茎辐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏掂恕。R本人自食惡果不足惜拖陆,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望懊亡。 院中可真熱鬧依啰,春花似錦、人聲如沸店枣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸯两。三九已至坏瞄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間甩卓,已是汗流浹背鸠匀。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逾柿,地道東北人缀棍。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓宅此,卻偏偏與公主長得像,于是被迫代替她去往敵國和親爬范。 傳聞我的和親對象是個殘疾皇子父腕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

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

  • ??ECMAScript 是 JavaScript 的核心璧亮,但如果要在 Web 中使用 JavaScript,那么...
    霜天曉閱讀 869評論 0 0
  • ECMAScript是JavaScript的核心斥难,但如果要在Web中使用JavaScript枝嘶,那么BOM(瀏覽器對...
    了凡和纖風(fēng)閱讀 424評論 0 0
  • 什么是BOM BOM:Browser Object Model 瀏覽器對象模型BOM是JavaScript組成之一...
    ZombieBrandg閱讀 660評論 0 1
  • 前言 ECMAScript是JavaScript的核心,但如果要在Web中使用JavaScript哑诊,那么BOM(瀏...
    DHFE閱讀 412評論 1 0
  • 第8章 BOM 1. window對象 1. BOM 的核心對象是 window,它表示瀏覽器的一個實例群扶。2. w...
    yinxmm閱讀 194評論 0 0