bom和dom的區別


瀏覽器對象模型BOM(Browser Object Model)

1、結構

  • BOM是Browser Object Model的縮寫,簡稱瀏覽器對象模型
  • BOM提供了獨立於內容而與瀏覽器窗口進行交互的對象
  • 由於BOM主要用於管理窗口與窗口之間的通訊,因此其核心對象是window
  • BOM由一系列相關的對象構成,並且每個對象都提供了很多方法與屬性
  • BOM缺乏標准,JavaScript語法的標准化組織是ECMA,DOM的標准化組織是W3C(WHATWG,WebHypertextApplicationTechnologyWorkingGroup——網頁超文本應用程序技術工作組目前正在努力促進BOM的標准化)
  • BOM最初是Netscape瀏覽器標准的一部分

結構圖如下:

2、BOM的作用

BOM提供了一些訪問窗口對象的一些方法,我們可以用它來移動窗口位置,改變窗口大小,打開新窗口和關閉窗口,彈出對話框,進行導航以及獲取客戶的一些信息如:瀏覽器品牌版本,屏幕分辨率。但BOM最強大的功能是它提供了一個訪問HTML頁面的一入口——document對象,以使得我們可以通過這個入口來使用DOM的強大功能!!!

window對象是BOM的頂層(核心)對象,所有對象都是通過它延伸出來的,也可以稱為window的子對象。由於window是頂層對象,因此調用它的子對象時可以不顯示的指明window對象,例如下面兩行代碼是一樣的:

  View Code

window -- window對象是BOM中所有對象的核心。window對象表示整個瀏覽器窗口,但不必表示其中包含的內容。此外,window還可用於移動或調整它表示的瀏覽器的大小,或者對它產生其他影響。

JavaScript中的任何一個全局函數或變量都是window的屬性。

3、window子對象

  • document 對象
  • frames 對象
  • history 對象
  • location 對象
  • navigator 對象
  • screen 對象

4、window對象關系屬性

  • parent:如果當前窗口為frame,指向包含該frame的窗口的frame (frame)
  • self :指向當前的window對象,與window同意。 (window對象)
  • top :如果當前窗口為frame,指向包含該frame的top-level的window對象
  • window :指向當前的window對象,與self同意。
  • opener :當窗口是用javascript打開時,指向打開它的那人窗口(開啟者)

5、window對象定位屬性

  • IE提供了window.screenLeft和window.screenTop對象來判斷窗口的位置,但未提供任何判斷窗口大小的方法。用document.body.offsetWidth和document.body. offsetHeight屬性可以獲取視口的大小(顯示HTML頁的區域),但它們不是標准屬性。
  • Mozilla提供window.screenX和window.screenY屬性判斷窗口的位置。它還提供了window.innerWidth和window.innerHeight屬性來判斷視口的大小,window.outerWidth和window.outerHeight屬性判斷瀏覽器窗口自身的大小。

6、window對象的方法

window方法及其描述
方法  描述
alert() 彈出一個帶有一段消息和確認按鈕的窗體
blur() 把鍵盤焦點從頂層窗口移開
clearInterval() 取消由setInterval()設置的timeout
clearTimeout() 取消有setTimeout()方法設置的timeout
close() 關閉瀏覽器窗口
confirm() 顯示帶有一段消息以及確認按鈕盒取消按鈕的對話框
focus() 把鍵盤焦點給予一個窗口
moveBy() 可相對窗口的當前坐標移動指定的像素
moveTo() 把窗口的左上角移動到一個指定的坐標
open() 打開一個新的瀏覽器窗體
prompt() 顯示可提示用戶輸入的對話框
resizeBy() 按照指定的像素調整窗口的大小
resizeTo() 把窗體的大小調整到指定的寬度和高度
scrollBy() 按照指定的像素值來滾動內容
scrollTo() 把內容滾動到指定的坐標
setInterval() 按照指定的周期(毫秒)來調用函數或計算表達式
setTimeout() 在指定的毫秒數后調用函數或表達式
  View Code

窗體控制

moveBy(x,y)——從當前位置水平移動窗體x個像素,垂直移動窗體y個像素,x為負數,將向左移動窗體,y為負數,將向上移動窗體

moveTo(x,y)——移動窗體左上角到相對於屏幕左上角的(x,y)點,當使用負數做為參數時會吧窗體移出屏幕的可視區域

resizeBy(w,h)——相對窗體當前的大小,寬度調整w個像素,高度調整h個像素。如果參數為負值,將縮小窗體,反之擴大窗體

resizeTo(w,h)——把窗體寬度調整為w個像素,高度調整為h個像素

窗體滾動軸控制

scrollTo(x,y)——在窗體中如果有滾動條,將橫向滾動條移動到相對於窗體寬度為x個像素的位置,將縱向滾動條移動到相對於窗體高度為y個像素的位置

scrollBy(x,y)—— 如果有滾動條,將橫向滾動條移動到相對於當前橫向滾動條的x個像素的位置(就是向左移動x像素),將縱向滾動條移動到相對於當前縱向滾動條高度為y個像素的位置(就是向下移動y像素)

窗體焦點控制

focus()—— 使窗體或控件獲取焦點

blur()——與focus函數相反,使窗體或控件失去焦點

新建窗體

open()——打開(彈出)一個新的窗體

close()——關閉窗體

opener屬性——新建窗體中對父窗體的引用,中文"開啟者"的意思

window.open方法語法

            window.open(url, name, features, replace);

open方法參數說明

  • url -- 要載入窗體的URL
  • name -- 新建窗體的名稱(目標,將在a 標簽的target屬性中用到,當與已有窗體名稱相同時將覆蓋窗體內容).open函數默認的打開窗體的方式為target的_blank彈出方式,因此頁面都將以彈出的方式打開
  • features -- 代表窗體特性的字符串,字符串中每個特性使用逗號分隔
  • replace -- 一個布爾值,說明新載入的頁面是否替換當前載入的頁面,此參數通常不用指定

open函數features參數說明,如果不使用第三個參數,將打開一個新的普通窗口

參數名稱

類型

說明

height

Number

設置窗體的高度,不能小於100

left

Number

說明創建窗體的左坐標,不能為負值

location

Boolean

窗體是否顯示地址欄,默認值為no

resizable

Boolean

窗體是否允許通過拖動邊線調整大小,默認值為no

scrollbars

Boolean

窗體中內部超出窗口可視范圍時是否允許拖動,默認值為no

toolbar

Boolean

窗體是否顯示工具欄,默認值為no

top

Number

說明創建窗體的上坐標,不能為負值

status

Boolean

窗體是否顯示狀態欄,默認值為no

width

Number

創建窗體的寬度,不能小於100

  特性字符串中的每個特性使用逗號分隔,每個特性之間不允許有空格

open方法返回值為一個新窗體的window對象的引用

對話框

alert(str)—— 彈出消息對話框(對話框中有一個“確定”按鈕)

confirm(str)—— 彈出消息對話框(對話框中包含一個“確定”按鈕與“取消”按鈕)

prompt(str,defaultValue)——彈出消息對話框(對話框中包含一個“確定”按鈕、“取消”按鈕與一個文本輸入框),由於各個瀏覽器實現的不同,若沒有第二個參數(文本框中的默認值)時也最好提供一個空字符串

狀態欄

window.defaultStatus 屬性——改變瀏覽器狀態欄的默認顯示(當狀態欄沒有其它顯示時),瀏覽器底部的區域稱為狀態欄,用於向用戶顯示信息

window.status 屬性——臨時改變瀏覽器狀態欄的顯示

時間等待與間隔函數

setTimeout()—— 暫停指定的毫秒數后執行指定的代碼

clearTimeout()——取消指定的setTimeout函數將要執行的代碼

setInterval()——間隔指定的毫秒數不停地執行指定的代碼

clearInterval()——取消指定的setInterval函數將要執行的代碼

setTimeout與setInterval方法有兩個參數,第一個參數可以為字符串形式的代碼,也可以是函數引用,第二個參數為間隔毫秒數,它們的返回是一個可用於對應clear方法的數字ID

  View Code

7、History對象,在瀏覽器歷史記錄中導航

History 對象的屬性:length 返回瀏覽器歷史列表中的 URL 數量

History 對象的方法

  • back() 加載 history 列表中的前一個 URL
  • forward() 加載 history 列表中的下一個 URL
  • go(num) 加載 history 列表中的某個具體頁面

8、Location 對象

Location 對象的屬性

  • hash 設置或返回從井號 (#) 開始的 URL(錨)
  • host 設置或返回主機名和當前 URL 的端口號
  • hostname 設置或返回當前 URL 的主機名
  • href 設置或返回完整的 URL
  • pathname 設置或返回當前 URL 的路徑部分
  • port 設置或返回當前 URL 的端口號
  • protocol 設置或返回當前 URL 的協議
  • search 設置或返回從問號 (?) 開始的 URL(查詢部分)

Location 對象的方法

  • assign() 加載新的文檔,這與直接將一個URL賦值給Location對象的href屬性效果是一樣的
  • reload() 重新加載當前文檔,如果該方法沒有規定參數,或者參數是 false,它就會用 HTTP 頭 If-Modified-Since 來檢測服務器上的文檔是否已改變。如果文檔已改變,reload() 會再次下載該文檔。如果文檔未改變,則該方法將從緩存中裝載文檔。這與用戶單擊瀏覽器的刷新按鈕的效果是完全一樣的。如果把該方法的參數設置為 true,那么無論文檔的最后修改日期是什么,它都會繞過緩存,從服務器上重新下載該文檔。這與用戶在單擊瀏覽器的刷新按鈕時按住 Shift 健的效果是完全一樣。
  • replace() 用新的文檔替換當前文檔,replace() 方法不會在 History 對象中生成一個新的紀錄。當使用該方法時,新的 URL 將覆蓋 History 對象中的當前紀錄。

9、Navigator對象

Navigator 對象的屬性

  • appCodeName 返回瀏覽器的代碼名
  • appName 返回瀏覽器的名稱
  • appVersion 返回瀏覽器的平台和版本信息
  • browserLanguage 返回當前瀏覽器的語言
  • cookieEnabled 返回指明瀏覽器中是否啟用 cookie 的布爾值
  • cpuClass 返回瀏覽器系統的 CPU 等級
  • onLine 返回指明系統是否處於脫機模式的布爾值
  • platform 返回運行瀏覽器的操作系統平台
  • systemLanguage 返回 OS 使用的默認語言
  • userAgent 返回由客戶機發送服務器的 user-agent 頭部的值
  • userLanguage 返回 OS 的自然語言設置

10、screen對象

javascript可以獲取某些關於用戶屏幕的信息

 
屬性 描述
availHeight 返回顯示屏幕的高度(除window任務欄)
availWidth 返回顯示屏幕的寬度(除window任務欄)
deviceXDPI 返回顯示屏幕的每英寸水平點數
deviceXDPI 返回顯示屏幕的每英寸垂直點數
fontSmoothingEnabled 返回用戶是否在顯示控制面板中開啟了字體平滑
 height 返回顯示屏幕的高度
 logicalXDPI 返回顯示屏幕每英寸的水平方向的常規點數
 logicalYDPI 返回顯示屏幕每英寸的垂直方向的常規點數
 pixelDepth 返回 顯示屏幕的顏色分辨率(比特每像素)
 updateInterval 設置或返回屏幕的刷新率
 width 返回顯示器屏幕的寬度

每個window對象的screen屬性都引用screen對象。該對象存放着有關顯示器屏幕相關的信息,我們可以根據這些信息來優化頁面的輸入等等。

11、框架與多窗口通信

子窗口與父窗口

只有自身和使用window.open方法打開的窗口和才能被JavaScript訪問,window.open方法打開的窗口通過window.opener屬性來訪問父窗口。 而在opener窗口中,可以通過window.open方法的返回值來訪問打開的窗口!

框架

window.frames集合:在框架集或包含iframe標簽的頁面中,frames集合包含了對有框架中窗口的引用

  View Code

在框架集中還可以使用ID來獲取子窗口的引用

原文參考與:https://www.cnblogs.com/dreamfly-yhl/p/3179905.html

  View Code

子窗口訪問父窗口——window對象的parent屬性

子窗口訪問頂層——window對象的top屬性

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM