字首和以及差分
BOM 即 Browser Object Model
(瀏覽器物件模型),瀏覽器模型提供了獨立於內容的、可以與瀏覽器視窗進行滑動的物件結構,就是瀏覽器提供的 API
BOM提供了獨立於內容 而與瀏覽器視窗進行互動的物件;
由於BOM主要用於管理視窗與視窗之間的通訊,因此其核心物件是window;
BOM由一系列相關的物件構成,並且每個物件都提供了很多方法與屬性;
BOM缺乏標準,JavaScript語法的標準化組織是ECMA,DOM的標準化組織是W3C,BOM最初是Netscape瀏覽器標準的一部分。
window物件是js中的頂級物件(全域性物件),所有定義在全域性作用域中的變數、函式都會變成window物件的屬性和方法,在呼叫的時候可以省略window。
BOM>window>document>getElementById()
一、window物件
三個彈框:不建議使用,會阻塞程式碼執行---僅接收純文字訊息
1 window.alert('警告框') 2 window.confirm('確認框') if(isFlag){log(確認鍵)}else{log(取消鍵)} 3 window.prompt('請輸入一個數字') 輸入框 返回內容
寬高表示:
// 視窗的可視寬度和可視高度 console.log(window.innerHeight); console.log(window.innerwidth);// html的寬度和高度 console.log(document.documentElement.clientWidth); console.log(document.documentElement.clientHeight);
視窗的開啟關閉移動:
open:URL,name,features,replace
1 // 開啟一個新視窗 _self在自己原本的視窗開啟頁面"_blank"在新視窗開啟頁面 2 // window.open("http://www.baidu.com","_self") 3 window.open("2.html","_blank","width:200;height:300")4 // 關閉當前視窗 5 window.close() 6 // 把視窗移動到距離電腦顯示屏左上的座標 ie可用,火狐、谷歌不可用 7 window.moveTo(100,100) 8 // 重新調整瀏覽器視窗大小 ie可用,火狐、谷歌不可用 9 window.resizeTo(200,200)
屬性 | 說明 |
---|---|
alert() |
系統警告對話方塊,接收字串引數並顯示 |
confirm() |
系統確認對話方塊,可提供確認或取消兩種事件 |
prompt() |
提示對話方塊,可對使用者展示確認、取消事件外,還可提供文字域 |
open() |
可導航至特定的 url,又可開啟一個新的瀏覽器視窗window.open(要載入的url, 視窗目標, 一個特定字串, 一個新頁面是否取代瀏覽器歷史記錄中當前載入頁面的布林值) |
onerror() |
事件處理程式,當未捕獲的異常傳播到呼叫棧上時就會呼叫它,並把錯誤訊息輸出到瀏覽器的 JavaScript 控制上。window.onerror(描述錯誤的一條訊息, 字串--存放引發錯誤的JavaScript程式碼所在的文件url, 文件中發生錯誤的行數) |
setTimeout() |
超時呼叫——在指定的時間過後執行程式碼window.setTimeout(function(){...}, 毫秒) |
setInterval() |
間歇呼叫——每隔指定的時間就執行一次window.setInterval(function(){...}, 毫秒) |
1、確認視窗位置及大小
獲取視窗位置的屬性與方法
屬性 | 說明 | 相容性 |
---|---|---|
screenLeft |
視窗相對於螢幕左邊 的位置 |
適用於IE、Safari、Chrome |
screenTop |
視窗相對於螢幕上邊 的位置 |
適用於IE、Safari、Chrome |
screenX |
視窗相對於螢幕左邊 的位置 |
適用於Firefox |
screenY |
視窗相對於螢幕上邊 的位置 |
適用於Firefox |
moveBy(x,y) |
接收的是在水平和垂直方向上移動的畫素數 | 全相容 |
moveTo(x,y) |
接收的是新位置的x和y座標值 | 全相容 |
跨瀏覽器獲取視窗左邊和上邊位置
視窗大小屬性與方法
屬性 | 說明 |
---|---|
innerWidth innerHeight
|
IE9+、Safari、Firefox、Opera: 該容器中頁面檢視區的大小 Chrome: 返回視口大小 移動裝置: 返回可見視口(即螢幕上可見頁面區域的大小) 移動IE瀏覽器: 不支援該屬性,當移動IE瀏覽器將佈局視口的資訊儲存至 document.body.clientWidth 與document.body.clientHeight 中 |
outerWidth outerHeight
|
IE9+、Safari、Firefox: 返回瀏覽器視窗本身的尺寸 Opera: 返回頁面檢視容器的大小 Chrome: 返回視口大小 |
resizeTo(width, height) |
接收瀏覽器視窗的新寬度與新高度 |
resizeBy(width, height) |
接收新視窗與原視窗的寬度與高度之差 |
二、navigator物件
navigator:包含客戶端瀏覽器的資訊 主要用來檢測瀏覽器、檢測外掛
1 navigator.appCodeName //瀏覽器的程式碼名稱 2 navigator.appName //返回瀏覽器的名稱 3 navigator.appVersion // 返回瀏覽器的平臺和版本資訊 4 navigator.language // 返回瀏覽器的語言 5 navigator.onLine // 返回指明系統是否處於離線狀態下的布林值 6 navigator.userAgent // 運營商/瀏覽器的名稱 7 navigator.platform //返回執行作業系統的平臺
三、location物件
location:包含當前網頁的URL資訊 主要應用場景:
1、解析 url 查詢字串引數,並將其返回一個物件,可通過迴圈、正則來實現,方法有很多,實現的大體思路是:
通過location
的search
屬性來獲取當前 url 傳遞的引數,如果 url 中有查詢字串的話就將其問號擷取掉,然後再遍歷裡面的字串並以等號為斷點,使用decodeURIComponent()
方法來解析其引數的具體數值,並將其放在物件容器中,並將其返回
2、載入新的文件,也可以說是重新整理頁面,主要有三個方法:
-
assign()
: location.assign("http://www.xxx.com")就可立即開啟新 url 並在瀏覽器是我歷史中生成一條新的記錄, 在一個生成了 5 條瀏覽記錄的頁面中,然後使用 assign()跳轉 url 後,history 記錄只剩兩條,一條是通過 assign 跳轉的頁面,另一條則是上一個頁面(使用 assign()跳轉方法的頁面),其餘的所有頁面都被清除掉了 -
replace()
: location.replace("http://www.bbb.com")只接受 url 一個引數,通過跳轉到的 url 介面不會在瀏覽器中生成歷史記錄,就是 history 的 length 不會+1,但是會替代掉當前的頁面 -
reload()
: 其作用是重新載入當前顯示的頁面,當不傳遞引數的時候,如果頁面自上次請求以來並沒有改變過,頁面就會從瀏覽器中重新載入,如果傳遞true
,則會強制從伺服器重新載入
屬性名 | 例子 | 說明 |
---|---|---|
hash |
" #host " | 返回 url 中的 hash(#後字元>=0) |
host |
" juejin.im:80 " | 伺服器名稱+埠(如果有) |
hostname |
" juejin.im " | 只含伺服器名稱 |
href |
" https://juejin.im/book/5a7bfe... " | 當前載入頁面的完整的 url |
pathname |
" /book/5a7bfe595188257a7349b52a " | 返回 url 的的目錄和(或)檔名 |
port |
" 8080 " | url 的埠號,如果不存在則返回空 |
protocol |
" https: (or http:) " | 頁面使用的協議 |
search |
" ?name=aha&age=20 " | 返回 url 的查詢字串, 以問號開頭 |
四、history物件
history:包含瀏覽器視窗訪問過的URL資訊 history 物件儲存著使用者上網的歷史記錄,從視窗被開啟的那一刻算起,history 物件是用視窗的瀏覽歷史用文件和文件狀態列表的形式表示。history 物件的 length 屬性表示瀏覽歷史列表中的元素數量,但出於安全考慮,指令碼不能訪問已儲存的 url
back() 後退一個頁面 go() 跳轉到指定頁面 forward() 前進一個頁面- History 物件的屬性及方法
屬性 | 說明 |
---|---|
go() |
1、以在使用者的歷史記錄中任意跳轉,go(n) 表示前進 n 頁, go(-n) 表示後退 n 頁(n>0) 2、go() 可以傳遞字串引數,瀏覽器歷史中如果有這條 url 則實現跳轉至包含該字串的第一個位置,否則什麼也不做 |
back() |
後退一頁 |
forword() |
前進一頁 |
length |
儲存歷史記錄的數量,可用於檢測當前頁面是否是使用者歷史記錄的第一頁(history.length === 0) |
五、screen物件
screen:包含客戶端顯示屏的資訊 其提供有關視窗顯示的大小和可用的顏色輸入資訊。
六、document物件
document:包含整個HTML文件,可悲用來訪問文件內容,及其所有的頁面元素