BOM的核心對象是window,它表示瀏覽器的一個實例。window既是經過Javascript訪問瀏覽器窗口的一個接口,又是ECMAScript規定的Global對象。瀏覽器
全部在全局做用域中聲明的變量、函數都會變成window對象的屬性和方法;緩存
(1) 定義全局變量與在window對象上直接定義屬性的區別在於:全局變量不能經過delect操做符刪除,而直接在window對象上定義的屬性能夠。服務器
var age = 29; window.color = "red"; delect window.age; //報錯 delect window.color; //true
(2) 嘗試訪問未聲明的變量會拋出錯誤,可是經過查詢window對象,能夠知道某個可能未聲明的變量是否存在。框架
var newValue = olaValue; //這裏會報錯,由於oldValue未定義 var newValue = window.oldValue; //這裏不會報錯,由於這是一次屬性查詢
若是頁面中包含框架,則每一個框架都擁有本身的window對象,而且保存在frames集合中。在frames集合中,能夠經過數值索引(從0開始,從左至右,從上到下)或者框架名稱來訪問相應的window對象。每一個window對象都有一個name屬性,其中包含框架的名稱。函數
window.moveBy(0,100); //將窗口向下移動100像素 window.moveTo(200,300); //將窗口移動到(200,300)
(1)四個屬性:innerWidth、innerHeight、outerWidth、outerHeightspa
(2)取得視口大小線程
var pageWidth=window.innerWidth, pageHeight=window.innerHeight; if(typeof pageWidth !="number"){ if(document.compatMode=="CSS1Compat"){ //經過檢查document.compatMode來肯定頁面是否處於標準模式 pageWidth=document.documentElement.clientWidth; pageHeight=document.documentElement.clientHeight } else{ pageWidth=document.body.clientWidth; pageHeight=document.body.clientHeight; } }
(3)調整瀏覽器窗口大小code
window.resiazeTo(100,100); //調整到100*100 window.resizeBy(100,50); //調整到100*150
window.open() 這個方法一般能夠接收四個參數:要加載的URL
、窗口目標
、一個特性字符串
以及一個表示新頁面是否取代瀏覽器歷史記錄中當前加載頁面的布爾值
。對象
調用close()方法還能夠關閉新打開的窗口,這個方法僅適用於經過window.open()打開的彈出窗口;
新建立的window對象有一個opener屬性,其中保存着打開它的原始窗口對象。這個屬性只在彈出窗口中的最外層window對象(top)中有定義。將新建立的變遷也的opener屬性設置爲null,即表示在單獨的進程中運行新標籤頁。索引
超時調用:表示在指定時間後執行代碼 setTimeout(要執行的代碼,以毫秒錶示的時間)、clearTimeout(超時調用ID)注意:通過必定時間後改代碼也不必定執行,由於JS是一個單線程解釋器,任務會按照隊列執行,通過該時間將任務添加到隊列中。若是隊列爲空,添加的代碼就會當即執行,不然就要等前面的代碼執行完了之後再執行
間歇調用:表示每隔指定的時間就執行一次代碼 setINterval(要執行的代碼,以毫秒錶示的時間)、clearInterval(間歇調用ID)
//設置超時調用 var timeoutId = setTimeout(function() { alert("Hello World"); },1000); //取消 clearTimeout(timeoutId); //設置間歇調用 var timeintervalId = setTimeout(function() { alert("Hello World"); },1000); //取消 clearTimeout(timeintervalId);
在開發環境下,不多使用真正的間隙調用,緣由是後一個間歇調用可能會在前一個間歇調用結束以前啓動。所以通常認爲使用超時調用來模擬間歇調用是一種最佳模式。以下,是採用超時調用模擬一個間歇調用。
//間歇調用 var num = 0; var max = 10; var intervalId = null; function incrementNumber() { num++; //若是執行次數達到了max設定的值,則取消後續還沒有執行的調用 if(num == max) { clearInterval(intervalId); alert("Done"); } } intervalId = setInterval(incrementNumber, 500); //超時調用模擬間歇調用 var num = 0; var max = 10; var intervalId = null; function incrementNumber() { num++; //若是執行次數達到了max設定的值,則取消後續還沒有執行的調用 if(num < max) { setTimeout(incrementNumber, 500); }else{ alert("Done"); } } setTimeout(incrementNumber, 500);
alert(); confirm(); prompt(要顯示給用戶的提示,文本輸入域的默認值); //顯示「打印」對話框 window.print(); //顯示「查找」對話框 window.find();
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; //逐個將每一項添加到agrs對象中去 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; }
P208
replace(要導航到的URL),在調用replace()方法以後,用戶不能會發哦前一個界面;
reload()做用是從新加載當前顯示的界面。
location.reload(); //從新加載(有可能從緩存中加載)
location.reload(true); //從新加載(從服務器從新加載)
Navigator 對象包含有關瀏覽器的信息。一般用於檢測顯示網頁的瀏覽器類型。
Screen 對象包含有關客戶端顯示屏幕的信息。
History 對象包含用戶(在瀏覽器窗口中)訪問過的 URL。History 對象是 window 對象的一部分,可經過 window.history 屬性對其進行訪問。
length屬性,go()、back()、forward()方法