javascript的BOM
ECMAScript是 JavaScript的核心,但若要在 Web中使用 JavaScript,那麼 BOM(瀏覽器物件模型)無疑才是真正的核心。 BOM 提供了許多對象,用於存取瀏覽器的功能,這些功能與任何網頁內容無關。多年來,缺少事實上的規範導致 BOM既有意思又有問題,因為瀏覽器提供者會按照各自的想法隨意去擴展它。於是,瀏覽器之間共有的物件就成為了事實上的標準。這些物件在瀏覽器中得以存在,很大程度上是由於它們提供了與瀏覽器的互通性。 W3C為了把瀏覽器中 JavaScript最基本的部分標準化,已經將 BOM的主要面向納入了 HTML5的規範中。
ps:以上註記於《javascript高階程式設計》,BOM是瀏覽器的視窗對象,提供了許多視窗處理的API。在webapp框架越來越多的情況下,需要我們在同一視窗處理不同頁面、不同的ajax數據,則需要我們熟悉BOM的內容。
1、window
BOM 的核心物件是 window ,它表示瀏覽器的一個實例。在瀏覽器中, window 物件有雙重角色,它既是透過 JavaScript 存取瀏覽器視窗的一個接口,也是 ECMAScript 規定的 Global 物件。
下面是open的第三個字串屬性
2、location
location 是最有用的 BOM物件之一,它提供了與目前視窗中載入的文件有關的信息,也提供了一些導覽功能。事實上, location 物件是很特別的一個對象,因為它既是 window 物件的屬性,也是document 物件的屬性;換句話說, window.location 和 document.location 引用的是同一個物件。 location 物件的用處不僅表現在它保存著目前文件的訊息,還表現在它將 URL 解析為獨立的片段,讓開發人員可以透過不同的屬性存取這些片段。
3、history
history 物件儲存使用者上網的歷史記錄,並且從視窗開啟的那一刻算起。 因為 history 是 window物件的屬性,因此每個瀏覽器視窗、每個標籤頁乃至每個框架,都有自己的 history 物件與特定的window 物件關聯。出於安全方面的考慮,開發人員無法得知使用者瀏覽過的 URL。不過,借用戶造訪過的頁面列表,同樣可以在不知道實際 URL 的情況下實現後退和前進。
4、navigator
最早由 Netscape Navigator 2.0引入的 navigator 對象,現在已成為識別客戶端瀏覽器的事實標準。雖然其他瀏覽器也透過其他方式提供了相同或相似的資訊(例如,IE 中的 window.clientInfor-mation 和 Opera 中的 indow.opera ) ,但 navigator 物件是所有支援 JavaScript 的瀏覽器所共有的。與其他 BOM 物件的情況一樣,每個瀏覽器中的 navigator 物件也都有一套自己的屬性。下圖有navigator比較重要的資訊
5、screen
JavaScript 中有幾個物件在程式設計上用處不大,而 screen 物件就是其中之一。 screen 物件基本上只用來表明客戶端的能力,其中包括瀏覽器視窗外部的顯示器的訊息,如像素寬度和高度等。每個瀏覽器中的 screen 物件都包含著各不相同的屬性,下表列出了所有屬性及支援對應屬性的瀏覽器。直接用下面程式碼查看下就行了
<!DOCTYPE html> <html> <head> <script> console.log(screen); </script> </head> <body> screen </body> </html>