BOM --瀏覽器對象模型

BOM

BOM(Browser Object Model) 是指瀏覽器對象模型,是用于描述這種對象與對象之間層次關(guān)系的模型,瀏覽器對象模型提供了獨立于內(nèi)容的、可以與瀏覽器窗口進(jìn)行互動的對象結(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ù)的瀏覽器窗口的高度和寬度,單位為像素。很顯然,當(dāng)用戶放大網(wǎng)頁的時候(比如將網(wǎng)頁從100%的大小放大為200%),這兩個屬性會變小。

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

scrollX、scrollY

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

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

scrollTo、scroll scrollBy、

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

scrollTo、scroll效果是一樣的

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

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

scrollBy可以相對當(dāng)前位置移動滾動條,而不是移動到絕對位置

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

navigator

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

navigator.userAgent屬性返回瀏覽器的User-Agent字符串,用來標(biāo)示瀏覽器的種類。下面是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 : 當(dāng)滾動條滾動的時候觸發(fā)
var i = 0;

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

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

練習(xí): 回到頂部

窗口尺寸與大小

窗口可視區(qū)尺寸

document.documentElement.clientWidth
document.documentElement.clientHeight

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

element.clientHeight = width + padding

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

窗口的滾動距離

Element.scrollTop

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

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

document.body.scrollTop/scrollLeft chrome中認(rèn)為窗口的滾動條是屬于body的

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

document.documentElement.scrollTop/scrollLeft chrome中認(rèn)為窗口的滾動條是屬于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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容