第八章 BOM

window

BOM 的核心是window,它表示浏览器的一个实例。
在浏览器中,window对象有双重角色,它既是通过JavaScript 访问浏览器窗口的一个接口,又是ECMAScript 规定的Global 对象

全局作用域

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

    <script>
        var age=29;
        function sayAge(){
            age=30
            alert(this.age);
        }
        alert(window.age); //29
        sayAge(); //30
        window.sayAge();//30
    </script>   

定义全局变量与window 对象上直接定义的属性存在差别:
全局变量不能通过delete 操作删除(使用var 语句添加的window属性又一个[[Configurable]]的特性,值为false),而直接window 对象上定义的属性可以。

    <script>
        var age=29;
        window.color="red";
        //IE<9,error,其他所有浏览器false
        delete window.age;
        //IE<9,error,其他所有浏览器false
        delete window.color;
        console.log(window.age); //29
        console.log(window.color);//undefined
    </script>   

窗口关系及框架

如果页面中包含框架,则每个框架都拥有自己的window 对象,并且都保存在frames 集合中。

    <frameset rows="160,*">
        <frame src="limit.html" name="topFrame">
        <frameset cols="50%,50%">
            <frame src="range.htm" name="leftFrame">
            <frame src="prop attr.html" name="rightFrame">
        </frameset>
    </frameset> 

以上代码创建一个框架集,可以通过window.frames[0]或者window.frames[“topFrame”]来饮用上方框架。但最好使用top 而非window 来引用框架。(例如top.frames[0])。top 对象适中指向最高(最外)层框架,也就是浏览器窗口,使确保在一个框架中正确访问另一个框架。而window 对象对于一个框架中编写的任何代码来说,指向的都是那个框架特定实例。

窗口位置

确定和修改window 对象位置的属性和方法
IE、Safari、Opera、Chorme screenLeft 和 screenRight
Firefox screenX、screenY


        //跨浏览器取得窗口左边和右上的位置
        var left = (typeof window.screenLeft =="number")?window.screenLeft:window.screenX;
        var right = (typeof window.screenRgiht == "number")? window.screenRgiht:window.screenY;
        console.log(left);
        console.log(right);

        //由于不同浏览器的不同处理方式,得到值有偏差
        //使用moveTo() he moveBy() 方法可以精确地移动到一个新位置
        //注:这两个方法可能会被浏览器禁用;只能对最外层的window 对象使用
        window.moveTo(0,0); // 将窗口移动到聘雇左上角
        window.moveBy(0,100); //将窗口向下移动100 像素
    </script>

location 对象

location 是最有用的BOM 对象之一,它提供了与当前窗口中加载文档有关的信息,还提供了一些导航功能。
location 对象是个特别对象,既是window 对象的属性,也是document 对象的属性。document.location 和window.location 引用的是同一对象。

猜你喜欢

转载自blog.csdn.net/yana_loo/article/details/76691893