var age=29; function sayAge(){ alert(this.age); } alert(window.age);//29 sayAge();//29 window.sayAge();//29
全局變量不能經過delete操做符刪除,而直接在window對象上的定義的屬性能夠javascript
var age=29; window.color="red"; //在IE<9時拋出錯誤,在其餘全部瀏覽器中都返回false delete window.age; //在IE<9時拋出錯誤,在其餘全部瀏覽器中都返回true delete window.color;//return true alert(window.age);//29 alert(window.color);//undefined
嘗試訪問未聲明的變量會拋出錯誤,可是經過查詢window對象,能夠知道某個可能未聲明的變量是否存在html
//這裏會拋出錯誤,由於oldValue未定義 var newValue=oldValue //這裏不會拋出錯誤,由於這是一次屬性查詢 //newValue的值是undefined var newValue=window.oldValue
若是頁面中包含框架,則每一個框架都擁有本身的window對象,而且保存在frames集合中java
<html> <head> <title>Frameset Example</title> </head> <frameset rows="160,*"> <frame src="frame.htm" name="topFrame"> <frameset cols="50%,50%"> <frame src="anotherframe.htm" name="leftFrame"> <frame src="yetanotherframe.htm" name="rightFrame"> </frameset> </frameset> </html>
screenLeft()和screenTop()屬性,分別用於表示窗口相對於屏幕左邊和上邊的位置數組
var leftPos=(typeof window.screenLeft=="number")?window.screenLeft:window.screenX; var topPos=(typeof window.screenTop=="number")?window.screenTop:window.screenY;
moveTo()接收的是新位置的x和y的座標值,而moveBy()接收的是在水平和垂直方向上移動的像素數瀏覽器
//將窗口移動到屏幕左上角 window.moveTo(0,0); //將窗口向下移動100像素 window.moveBy(0,100); //將窗口移動到(200,300) window.moveTo(200,300); //將窗口向左移動50像素 window.moveBy(-50,0)
使用resizeTo()和resizeBy()方法能夠調整瀏覽器窗口的代銷。這兩個方法都接收兩個參數,其中resizeTo()接收瀏覽器窗口的新寬度和高度,而resizeBy()接收新窗口與原窗口的寬度和高度之差。框架
//調整到100X100 window.resizeTo(100,100); //調整到200X150 window.resizeBy(100,50) //調整到300X300 window,resizeTo(300,300)
confirm()方法,像是一個"警告"對話框。除了顯示"肯定"按鈕以外,還會顯示一個Cancel("取消")按鈕,兩個按鈕可讓用戶決定是否執行給定的操做函數
if (confirm("Are you sure?")) { alert("I'm so glad you're sure! "); } else { alert("I'm sorry to hear you're not sure. "); }
建立函數,解析查詢字符串,返回包含全部參數的一個對象工具
function getQueryStringArgs(){ //取得查詢字符串並去掉開頭的問號 var qs = (location.search.length > 0 ? location.search.substring(1) : ""), //保存數據的對象 args = {}, //取得每一項 items = qs.length ? qs.split("&") : [], item = null, name = null, value = null, //在 for 循環中使用 i = 0, len = items.length; //逐個將每一項添加到 args 對象中 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; }
使用 location 對象能夠經過不少方式來改變瀏覽器的位置。首先,也是最經常使用的方式,就是使用assign() 方法併爲其傳遞一個 URL。ui
location.assign("http://www.wrox.com");
下面兩行代碼與顯式調用assign()方法的效果徹底同樣this
window.location = "http://www.wrox.com"; location.href = "http://www.wrox.com";
//假設初始 URL 爲 http://www.wrox.com/WileyCDA/ //將 URL 修改成"http://www.wrox.com/WileyCDA/#section1" location.hash = "#section1"; //將 URL 修改成"http://www.wrox.com/WileyCDA/?q=javascript" location.search = "?q=javascript"; //將 URL 修改成"http://www.yahoo.com/WileyCDA/" location.hostname = "www.yahoo.com"; //將 URL 修改成"http://www.yahoo.com/mydir/" location.pathname = "mydir"; //將 URL 修改成"http://www.yahoo.com:8080/WileyCDA/" location.port = 8080
非IE瀏覽器可使用plugins數組來達到這個目的
//檢測插件(在 IE 中無效) function hasPlugin(name){ name = name.toLowerCase(); for (var i=0; i < navigator.plugins.length; i++){ if (navigator. plugins [i].name.toLowerCase().indexOf(name) > -1){ return true; } } return false; } //檢測 Flash alert(hasPlugin("Flash")); //檢測 QuickTime alert(hasPlugin("QuickTime"));
使用 go() 方法能夠在用戶的歷史記錄中任意跳轉,能夠向後也能夠向前。這個方法接受一個參數,表示向後或向前跳轉的頁面數的一個整數值。負數表示向後跳轉(相似於單擊瀏覽器的「後退」按鈕),正數表示向前跳轉(相似於單擊瀏覽器的「前進」按鈕)。
//後退一頁 history.go(-1); //前進一頁 history.go(1); //前進兩頁 history.go(2);
也能夠給 go() 方法傳遞一個字符串參數,此時瀏覽器會跳轉到歷史記錄中包含該字符串的第一個位置——可能後退,也可能前進,具體要看哪一個位置最近。若是歷史記錄中不包含該字符串,那麼這個方法什麼也不作,
//跳轉到最近的 wrox.com 頁面 history.go("wrox.com"); //跳轉到最近的 nczonline.net 頁面 history.go("nczonline.net");
還可使用兩個簡寫方法 back() 和 forward() 來代替 go() 。
//後退一頁 history.back(); //前進一頁 history.forward();
history 對象還有一個 length 屬性,保存着歷史記錄的數量。
if (history.length == 0){ //這應該是用戶打開窗口後的第一個頁面 }