Skip to content

什麼是瀏覽器物件模型 BOM? ​

前一個章節我們講到了瀏覽器的文件物件模型 DOM,也提到了瀏覽器具備了網址列、前進後退、重整、分頁等等功能。

甚至現代的瀏覽器能做到更多的事情,像是攝影機、麥克風、藍芽、地理位置等等。

這些功能被瀏覽器的開發廠商封裝成了一個可以被訪問的物件模型,也就是瀏覽器物件模型 (Browser Object Model, BOM)。

瀏覽器物件模型的組成 ​

瀏覽器物件模型 BOM 是由一系列的物件組成,這些物件可以讓我們操作瀏覽器的各種功能。

可以透過 window 物件來訪問 BOM 的功能,window 物件是 BOM 的根物件,它長得像這樣:

window
├── document // 文件物件模型 DOM
├── location // 瀏覽器的網址列
├── history // 瀏覽器的歷史紀錄
├── navigator // 瀏覽器的資訊
├── screen // 瀏覽器的螢幕資訊
├── frames // 瀏覽器的分頁
├── localStorage // 瀏覽器的本地儲存
├── sessionStorage // 瀏覽器的會話儲存
├── alert() // 顯示一個警告視窗
├── confirm() // 顯示一個確認視窗
├── prompt() // 顯示一個提示視窗
├── setTimeout() // 設定一個定時器
├── setInterval() // 設定一個間隔定時器
...還有很多其他的物件和方法

你可能會覺得奇怪,為什麼 DOM 是 BOM 的一部分?

這是因為 BOM 是瀏覽器對於該視窗該分頁的主體,而 DOM 是瀏覽器對於該分頁的內容,所以 DOM 也是 BOM 的一部分。

在 JavaScript 裡,你可以透過 window.document 來訪問文件物件模型 DOM,也可以直接使用 document 來訪問文件物件模型 DOM。

這是因為瀏覽器會將 BOM 的所有屬性都列為全域可訪問。

同理地,你也可以這樣做:

window的屬性直接訪問用途
window.locationlocation網址列
window.historyhistory歷史紀錄、前進、後退
window.navigatornavigator瀏覽器資訊
window.screenscreen螢幕資訊、長寬
window.framesframes分頁
window.localStoragelocalStorage本地儲存
window.sessionStoragesessionStorage會話儲存
window.alert()alert()警告視窗
window.confirm()confirm()確認視窗
window.prompt()prompt()提示視窗
window.setTimeout()setTimeout()定時器
window.setInterval()setInterval()間隔定時器
window.console.log()console.log()控制台

還在持續增長中的 BOM ​

由於現代的瀏覽器也應用於手機端、平板端、桌面端等,所以 BOM 也在持續增長。

像是 GPS, 多媒體存取, 藍芽, 電池, 螢幕錄影等就被封裝在 Navigator 中。

功能說明語法
Geolocation取得使用者的地理位置navigator.geolocation
MediaDevices取得使用者的多媒體設備navigator.mediaDevices
Bluetooth取得使用者的藍芽設備navigator.bluetooth
Battery取得使用者的電池資訊navigator.battery
Screen Recording取得使用者的螢幕錄影navigator.mediaDevices.getDisplayMedia()

結語 ​

BOM 是瀏覽器對於瀏覽器的物件模型,它提供了許多可以讓我們操作瀏覽器的功能。

很多時候我們會使用 BOM 來操作瀏覽器的功能,像是跳轉頁面、顯示警告視窗、設定定時器、利用 LocalStorage 和 SessionStorage 來儲存資料等。

最基本的,我們最常使用 console.log 來印出資訊。

以上都是 BOM 的功能,有些提到但沒有深論的,未來我們會逐一介紹。

Wrirten by Aaron Su