bom操作

什么是BOM

BOM:Browser Object Model 是瀏覽器對象模型,瀏覽器對象模型提供了獨立與內容的、可以與瀏覽器窗口進行互動的對象結構,BOM由多個對象構成,其中代表瀏覽器窗口的window對象是BOM的頂層對象,其他對象都是該對象的子對象。

目前主流瀏覽器介紹

IE——11: 國內用得最多的IE瀏覽器,歷來對W3C標準支持差。從IE10開始支持ES6標準;

Sarafi:Apple的Mac系統自帶的基于Webkit內核的瀏覽器,從OS X 10.7 Lion自帶的6.1版本開始支持ES6,目前最新的OS X 10.10 Yosemite自帶的Sarafi版本是8.x,早已支持ES6;

Firefox:Mozilla自己研制的Gecko內核和JavaScript引擎OdinMonkey。早期的Firefox按版本發布,后來終于聰明地學習Chrome的做法進行自升級,時刻保持最新;

移動設備上目前iOS和Android兩大陣營分別主要使用Apple的Safari和Google的Chrome,由于兩者都是Webkit核心,結果HTML5首先在手機上全面普及(桌面絕對是Microsoft拖了后腿),對JavaScript的標準支持也很好,最新版本均支持ES6。

這里為什么沒有說到360瀏覽器、搜狗瀏覽器呢?其實這一類瀏覽器只是在以上列舉出來的瀏覽器的內核基礎上,換了一個包裝,添加了一些個性功能而已,本質上并沒有什么區別。

可以操作的BOM對象

window對象

所有瀏覽器都支持 window 對象。它表示瀏覽器窗口。

所有 JavaScript 全局對象、函數以及變量均自動成為 window 對象的成員。

全局變量是 window 對象的屬性。

全局函數是 window 對象的方法。

甚至 HTML DOM 的 document 也是 window 對象的屬性之一:

window.document.getElementById("header");

與此相同:

document.getElementById("header");

window尺寸

有三種方法能夠確定瀏覽器窗口的尺寸(瀏覽器的視口,不包括工具欄和滾動條)。

對于Internet Explorer、Chrome、Firefox、Opera 以及 Safari:

window.innerHeight - 瀏覽器窗口的內部高度

window.innerWidth - 瀏覽器窗口的內部寬度

對于 Internet Explorer 8、7、6、5:

document.documentElement.clientHeight

document.documentElement.clientWidth

或者

document.body.clientHeight

document.body.clientWidth

實用的 JavaScript 方案(涵蓋所有瀏覽器):

var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;

var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

x=document.getElementById("demo");

x.innerHTML="瀏覽器的內部窗口寬度:" + w + ",高度:" + h + "。"

該例顯示瀏覽器窗口的高度和寬度:(不包括工具欄/滾動條)

除此之外,還有一個outerWidth和outerHeight屬性,可以獲取瀏覽器窗口的整個寬高。

其他操作window方法(不常用)

window.open() - 打開新窗口

window.close() - 關閉當前窗口

window.moveTo() - 移動當前窗口

window.resizeTo() - 調整當前窗口的尺寸

navigator

navigator對象表示瀏覽器的信息,最常用的屬性包括:

navigator.appName:瀏覽器名稱;

navigator.appVersion:瀏覽器版本;

navigator.language:瀏覽器設置的語言;

navigator.platform:操作系統類型;

navigator.userAgent:瀏覽器設定的User-Agent字符串。

window.navigator 對象在編寫時可不使用 window 這個前綴。

示例:

txt = "

Browser CodeName: " + navigator.appCodeName + "

";

txt+= "

Browser Name: " + navigator.appName + "

";

txt+= "

Browser Version: " + navigator.appVersion + "

";

txt+= "

Cookies Enabled: " + navigator.cookieEnabled + "

";

txt+= "

Platform: " + navigator.platform + "

";

txt+= "

User-agent header: " + navigator.userAgent + "

";

txt+= "

User-agent language: " + navigator.systemLanguage + "

";

document.getElementById("example").innerHTML=txt;

注意

來自 navigator 對象的信息具有誤導性,不應該被用于檢測瀏覽器版本,這是因為:

navigator 數據可被瀏覽器使用者更改

瀏覽器無法報告晚于瀏覽器發布的新操作系統

screen

screen對象表示屏幕的信息,常用的屬性有:

screen.width:屏幕寬度,以像素為單位;

screen.availWidth:屏幕的可用寬度,以像素為單位

screen.height:屏幕高度,以像素為單位;

screen.availHeight:屏幕的可用高度,以像素為單位

screen.colorDepth:返回顏色位數,如8、16、24。

window.screen 對象在編寫時可以不使用 window 這個前綴。

document.write( "屏幕寬度:"+screen.width+"px
" );

document.write( "屏幕高度:"+screen.height+"px
" );

document.write( "屏幕可用寬度:"+screen.availWidth+"px
" );

document.write( "屏幕可用高度:"+screen.availHeight+"px" );

Location

location對象表示當前頁面的URL信息。例如,一個完整的URL:

http://www.example.com:8080/path/index.html?a=1&b=2#TOP

可以用location.href獲取:

document.write(location.href);

要獲得URL各個部分的值,可以這么寫:

location.protocol; // 'http'

location.host; // 'www.example.com'

location.port; // '8080'

location.pathname; // '/path/index.html'

location.search; // '?a=1&b=2'

location.hash; // 'TOP'

要加載一個新頁面,可以調用location.assign()。如果要重新加載當前頁面,調用location.reload()方法非常方便。

示例:加載一個新頁面

function newDoc()

{

window.location.assign("http://www.w3school.com.cn")

}

History

history對象保存了瀏覽器的歷史記錄,JavaScript可以調用history對象的back()或forward (),相當于用戶點擊了瀏覽器的“后退”或“前進”按鈕。

History Back

history.back() 方法加載歷史列表中的前一個 URL。

這與在瀏覽器中點擊后退按鈕是相同的:

function goBack()

?{

?window.history.back()

?}

History Forward

history forward() 方法加載歷史列表中的下一個 URL。

這與在瀏覽器中點擊前進按鈕是相同的:

function goForward()

?{

?window.history.forward()

?}

注意

這個對象屬于歷史遺留對象,對于現代Web頁面來說,由于大量使用AJAX和頁面交互,簡單粗暴地調用history.back()可能會讓用戶感到非常憤怒。

新手開始設計Web頁面時喜歡在登錄頁登錄成功時調用history.back(),試圖回到登錄前的頁面。這是一種錯誤的方法。

任何情況,你都不應該使用history這個對象了。

拓展

系統對話框

alert()警告框,沒有返回值

confirm('提問的內容')返回boolean

prompt(),輸入框,返回字符串或null

window對象常用事件

onload:當頁面加載時

onscroll:當頁面滾動時

onresize:頁面重新定義大小時

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,516評論 2 379

推薦閱讀更多精彩內容

  • 什么是BOM BOM:Browser Object Model 是瀏覽器對象模型,瀏覽器對象模型提供了獨立與內容的...
    小全同學閱讀 2,359評論 0 10
  • window對象 document 對 Document 對象的只讀引用。 navigat...
    森大叔閱讀 1,080評論 0 1
  • 什么是BOM BOM:Browser Object Model 是瀏覽器對象模型,瀏覽器對象模型提供了獨立與內容的...
    LaBaby_閱讀 227評論 0 0
  • 一、JS前言 (1)認識JS 也許你已經了解HTML標記(也稱為結構),知道了CSS樣式(也稱為表示),會使用HT...
    凜0_0閱讀 2,788評論 0 8
  • MVC MVC(Model-View-Controller)是最老牌的的思想,老牌到4人幫的書里把它歸成了一種模式...
    i_蘇閱讀 1,374評論 0 2