javascript--BOM

window对象

BOM的和新对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重角色,它便是经过javascript访问浏览器窗口的接口,又是ECMAScript 规定的 Global 对象。着意味着在网页中定义的任何一个对象、变量和函数,都以window做为其Global对象,所以有访问parseInt()等方法。
  1. 全局做用域
    因为 window 对象同时扮演着 ECMAScript中 Global 对象的角色,所以全部在全局做用域中声明的变量、函数都会变成 window 对象的属性和方法javascript

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

    咱们在全局做用域中定义了一个变量 age 和一个函数 sayAge() ,它们被自动归在了 window 对象名下。于,能够经过 window.age 访问变量 age,能够经过 window.sayAge() 访问函数 sayAge()因为 sayAge() 存在于全局做用域中,所以 this.age 被window.age ,最终显示的仍然是正确的结果。
    抛开全局变量会成为 window 对象的属性不谈,定义全局变量与window 对象上直接定义属性仍是有一点差异:全局变量不能经过 delete 操做符删除,而直接在 window 对象上的定义的属性能够。java

    var age = 29;
    window.color = "red";
    //在 IE < 9 时抛出错误,在其余全部浏览器中都返回 false
    delete window.age;
    //在 IE < 9 时抛出错误,在其余全部浏览器中都返回 true
    delete window.color; //returns true
    alert(window.age); //29
    alert(window.color); //undefined

    另外,还要记住一件事:尝试访问未声明的变量会抛出错误,可是经过查询 window 对象,能够知道某个可能未声明的变量是否存在。浏览器

    //这里会抛出错误,由于 oldValue 未定义
    var newValue = oldValue;
    //这里不会抛出错误,由于这是一次属性查询
    //newValue 的值是 undefined
    var newValue = window.oldValue;

    本章后面将要讨论的不少全局 JavaScript 对象(如 location 和 navigator )实际上都是 window对象的属性。安全

  2. 窗口关系及框架

若是页面中包含框架,则每一个框架都拥有本身的 window 对象,而且保存在 frames 集合中。在 frames集合中,能够经过数值索引(从 0 开始,从左至右,从上到下)或者框架名称来访问相应的 window 对象。每一个 window 对象都有一个 name 属性,其中包含框架的名称.框架

  1. 窗口位置函数

window.screenLeft : window.screenX;this

var topPos = (typeof window.screenTop == "number") ?    window.screenTop : window.screenY;
```
这个例子运用三元操做符首先肯定 screenLeft 和 screenTop 属性是否存在,若是是(在 IE、Safari、Opera 和 Chrome 中),则取得这两个属性的值。若是不存在(在 Firefox 中),则取得screenX和 screenY 的值。
  1. 窗口大小code

    var pageWidth = window.innerWidth,
        pageHeight = window.innerHeight;
        if (typeof pageWidth != "number"){
        if (document.compatMode == "CSS1Compat"){
        pageWidth = document.documentElement.clientWidth;
        pageHeight = document.documentElement.clientHeight;
        } else {
        pageWidth = document.body.clientWidth;
        pageHeight = document.body.clientHeight;
        }
        }
  2. 导航和打开窗口
    弹出窗口window.open()
    安全限制
  3. 系统对话框

location对象

  1. 查询字符串参数对象

    function getQueryStringArg () {
        var qs = (window.location.search.length > 0 ? location.search.substring(1) : ""),
            args = {},
            items = qs.length ? qs.split('&') : [],
            item = null,
            name = null,
            value = null,
            i = 0,
            len = items.length;
        for (i = 0; i < len; i++) {
            item = items[i].split("=");
            name = decodeURIComponent(item[0]);
            value = decodeURIComponent(item[1]);
            if (name.length) {
                args[name] = value;
            }
        }
        return args;
    }
  2. 位置操做

history对象

//后退一页
history.go(-1);
//前进一页
history.go(1);
//前进两页
history.go(2);
//后退一页
history.back();
//前进一页
history.forward()
if (history.length == 0){
//这应该是用户打开窗口后的第一个页面
}
相关文章
相关标签/搜索