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){
//這應該是用戶打開窗口後的第一個頁面
}
相關文章
相關標籤/搜索