>>>>> BOM

BOM

BOM(Browser Object Model) 是指瀏覽器對象模型如庭,是用于描述這種對象與對象之間層次關(guān)系的模型,瀏覽器對象模型提供了獨立于內(nèi)容的豆混、可以與瀏覽器窗口進行互動的對象結(jié)構(gòu)予跌。BOM由多個對象組成,其中代表瀏覽器窗口的Window對象是BOM的頂層對象仰猖,其他對象都是該對象的子對象

window

BOM 的核心是window對象,它表示瀏覽器的一個實例掠河。在瀏覽器中亮元,即是javascript訪問瀏覽器窗口的一個接口,又是ECMAScript規(guī)定的Global對象唠摹,這就意味著在網(wǎng)頁中定義的任意變量、函數(shù)奉瘤、對象都是以window作為Global對象勾拉。

所有在全局作用域中聲明的變量、函數(shù)盗温、對象都會作為window的屬性和方法

var age = 24;

function printName(){
    console.log(age);
}


console.log(window.age);
window.printName();

window對象屬性

window.innerHeight屬性藕赞,window.innerWidth屬性

這兩個屬性返回網(wǎng)頁的CSS布局占據(jù)的瀏覽器窗口的高度和寬度,單位為像素卖局。很顯然斧蜕,當用戶放大網(wǎng)頁的時候(比如將網(wǎng)頁從100%的大小放大為200%),這兩個屬性會變小砚偶。

注意批销,這兩個屬性值包括滾動條的高度和寬度洒闸。

scrollX、scrollY

  • scrollX:滾動條橫向偏移
  • scrollY:滾動條縱向偏移

這兩個值隨著滾動位置變化而變化

scrollTo均芽、scroll scrollBy丘逸、

我們也可以通過方法scrollTo或者scroll方法改變滾動條位置到指定坐標

scrollTo、scroll效果是一樣的

window.scrollTo(0, 300); // 滾動條移動到300px處

兩個參數(shù)分別是水平掀宋、垂直方向偏移

scrollBy可以相對當前位置移動滾動條深纲,而不是移動到絕對位置

scrollBy(0, 100); // 滾動條下移100px

navigator

Window對象的navigator屬性,指向一個包含瀏覽器相關(guān)信息的對象劲妙。

navigator.userAgent屬性返回瀏覽器的User-Agent字符串湃鹊,用來標示瀏覽器的種類。下面是Chrome瀏覽器的User-Agent镣奋。

navigator.userAgent // "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"

screen

screen對象包含了顯示設(shè)備的信息

// 顯示設(shè)備的高度币呵,單位為像素
screen.height
// 1920

// 顯示設(shè)備的寬度,單位為像素
screen.width
// 1080

一般使用以上兩個屬性唆途,了解設(shè)備的分辨率富雅。上面代碼顯示,某設(shè)備的分辨率是1920x1080肛搬。除非調(diào)整顯示器的分辨率没佑,否則這兩個值可以看作常量,不會發(fā)生變化温赔。顯示器的分辨率與瀏覽器設(shè)置無關(guān)蛤奢,縮放網(wǎng)頁并不會改變分辨率。

window.open(url)

打開一個新窗口, 參數(shù)是新窗口需要載入的url地址

window.open('http://www.baidu.com')

如果不傳參數(shù)陶贼,則打開的是空白窗口

window.open();

返回值 返回的新開頁面的window對象

var opener = window.open();

opener.document.body.style.background = 'red';

并且可以通過它的close方法將它關(guān)閉

opner.close()

window 相關(guān)的事件

onscroll onresize

//onscroll : 當滾動條滾動的時候觸發(fā)
var i = 0;

window.onscroll = function() {
    document.title = i++;
}

//onresize : 當窗口大小發(fā)生變化的時候觸發(fā)
window.onresize = function() {
    document.title = i++;
}

練習(xí): 回到頂部

窗口尺寸與大小

窗口可視區(qū)尺寸

document.documentElement.clientWidth
document.documentElement.clientHeight

document.documentElement 相當與 document.getElementsByTagName('html')[0]
也就是html元素

element.clientHeight = width + padding

但是對于html元素啤贩,它的表現(xiàn)有點不同,它代表了窗口的大小

窗口的滾動距離

Element.scrollTop

可以設(shè)置或者獲取一個元素距離他容器頂部的像素距離(也就是滾動條滾動距離)

在chrome中, 窗口的滾動距離為:

document.body.scrollTop/scrollLeft chrome中認為窗口的滾動條是屬于body的

在體瀏覽器中,窗口的滾動距離為:

document.documentElement.scrollTop/scrollLeft chrome中認為窗口的滾動條是屬于html的

document.onclick = function(){

    //chrome中
    alert(document.body.scrollTop);

    //其他瀏覽器中
    alert(document.documentElement.scrollTop);
}

窗口的內(nèi)容高度

document.body.scrollHeight

element.scrollHeight

是計量元素內(nèi)容高度的只讀屬性拜秧,包括overflow樣式屬性導(dǎo)致的視圖中不可見內(nèi)容

<div id="wrapper">
    <div></div>
</div>

<style>
#wrapper{
    width:100px;
    height:100px;
    padding: 10px;
    border: 1px solid red; 
    overflow: hidden; 
}

#wrapper>div{
    height: 600px;
    width: 90px; 
    background: red;
}
</style>

<script>
var oDiv = document.getElementById('wrapper');
alert(oDiv.scrollHeight);//620 = 600+10*2 (10為wrapper的padding);
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痹屹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子枉氮,更是在濱河造成了極大的恐慌志衍,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聊替,死亡現(xiàn)場離奇詭異楼肪,居然都是意外死亡,警方通過查閱死者的電腦和手機惹悄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門春叫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事暂殖〖劢常” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵央星,是天一觀的道長霞怀。 經(jīng)常有香客問我,道長莉给,這世上最難降的妖魔是什么毙石? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮颓遏,結(jié)果婚禮上徐矩,老公的妹妹穿的比我還像新娘。我一直安慰自己叁幢,他們只是感情好滤灯,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著曼玩,像睡著了一般鳞骤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上黍判,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天豫尽,我揣著相機與錄音,去河邊找鬼顷帖。 笑死美旧,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的贬墩。 我是一名探鬼主播榴嗅,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼陶舞!你這毒婦竟也來了嗽测?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤肿孵,失蹤者是張志新(化名)和其女友劉穎论咏,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雅宾,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年葵硕,在試婚紗的時候發(fā)現(xiàn)自己被綠了眉抬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贯吓。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蜀变,靈堂內(nèi)的尸體忽然破棺而出悄谐,到底是詐尸還是另有隱情爬舰,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布寒瓦,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏喂很。R本人自食惡果不足惜惜颇,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望少辣。 院中可真熱鬧凌摄,春花似錦、人聲如沸毒坛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽煎殷。三九已至屯伞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間豪直,已是汗流浹背劣摇。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弓乙,地道東北人末融。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像暇韧,于是被迫代替她去往敵國和親勾习。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容