美文网首页
BOM --浏览器对象模型

BOM --浏览器对象模型

作者: 卓小生 | 来源:发表于2016-10-30 14:57 被阅读0次

    BOM

    BOM(Browser Object Model) 是指浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象

    window

    BOM 的核心是window对象,它表示浏览器的一个实例。在浏览器中,即是javascript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象,这就意味着在网页中定义的任意变量、函数、对象都是以window作为Global对象。

    所有在全局作用域中声明的变量、函数、对象都会作为window的属性和方法

    var age = 24;
    
    function printName(){
        console.log(age);
    }
    
    
    console.log(window.age);
    window.printName();
    
    

    window对象属性

    window.innerHeight属性,window.innerWidth属性

    这两个属性返回网页的CSS布局占据的浏览器窗口的高度和宽度,单位为像素。很显然,当用户放大网页的时候(比如将网页从100%的大小放大为200%),这两个属性会变小。

    注意,这两个属性值包括滚动条的高度和宽度。

    scrollX、scrollY

    • scrollX:滚动条横向偏移
    • scrollY:滚动条纵向偏移

    这两个值随着滚动位置变化而变化

    scrollTo、scroll scrollBy、

    我们也可以通过方法scrollTo或者scroll方法改变滚动条位置到指定坐标

    scrollTo、scroll效果是一样的

    window.scrollTo(0, 300); // 滚动条移动到300px处
    

    两个参数分别是水平、垂直方向偏移

    scrollBy可以相对当前位置移动滚动条,而不是移动到绝对位置

    scrollBy(0, 100); // 滚动条下移100px
    

    navigator

    Window对象的navigator属性,指向一个包含浏览器相关信息的对象。

    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对象包含了显示设备的信息

    // 显示设备的高度,单位为像素
    screen.height
    // 1920
    
    // 显示设备的宽度,单位为像素
    screen.width
    // 1080
    

    一般使用以上两个属性,了解设备的分辨率。上面代码显示,某设备的分辨率是1920x1080。除非调整显示器的分辨率,否则这两个值可以看作常量,不会发生变化。显示器的分辨率与浏览器设置无关,缩放网页并不会改变分辨率。

    window.open(url)

    打开一个新窗口, 参数是新窗口需要载入的url地址

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

    如果不传参数,则打开的是空白窗口

    window.open();
    

    返回值 返回的新开页面的window对象

    var opener = window.open();
    
    opener.document.body.style.background = 'red';
    

    并且可以通过它的close方法将它关闭

    opner.close()
    

    window 相关的事件

    onscroll onresize

    //onscroll : 当滚动条滚动的时候触发
    var i = 0;
    
    window.onscroll = function() {
        document.title = i++;
    }
    
    //onresize : 当窗口大小发生变化的时候触发
    window.onresize = function() {
        document.title = i++;
    }
    

    练习: 回到顶部

    窗口尺寸与大小

    窗口可视区尺寸

    document.documentElement.clientWidth
    document.documentElement.clientHeight
    

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

    element.clientHeight = width + padding

    但是对于html元素,它的表现有点不同,它代表了窗口的大小

    窗口的滚动距离

    Element.scrollTop

    可以设置或者获取一个元素距离他容器顶部的像素距离(也就是滚动条滚动距离)

    在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);
    }
    

    窗口的内容高度

    document.body.scrollHeight

    element.scrollHeight

    是计量元素内容高度的只读属性,包括overflow样式属性导致的视图中不可见内容

    <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>
    

    相关文章

      网友评论

          本文标题:BOM --浏览器对象模型

          本文链接:https://www.haomeiwen.com/subject/wehuuttx.html