摘要:對象的核心對象是,它表示瀏覽器的一個實例。而和則表示該容器中頁面視圖區的大小。在中,與返回相同的值,即視口大小而非瀏覽器窗口大小。第三個參數是一個逗號分隔的設置字符串,表示在新窗口中都顯示哪些特性。這應該是用戶打開窗口后的第一個頁面
BOM window對象
BOM的核心對象是window,它表示瀏覽器的一個實例。在瀏覽器中,window對象有雙重角色,它既是通過JavaScript訪問瀏覽器窗口的一個接口,又是ECMAScript規定的Global對象。這以為著在網頁中定義的任何一個對象、變量和函數,都是以window作為其Global對象,因此有權訪問parseInt()等方法。
全局作用域var age=29; function sayAge(){ alert(this.age); } alert(window.age);//29 sayAge();//29 window.sayAge();//29
全局變量不能通過delete操作符刪除,而直接在window對象上的定義的屬性可以
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對象,可以知道某個可能未聲明的變量是否存在
//這里會拋出錯誤,因為oldValue未定義 var newValue=oldValue //這里不會拋出錯誤,因為這是一次屬性查詢 //newValue的值是undefined var newValue=window.oldValue窗口關系及框架
如果頁面中包含框架,則每個框架都擁有自己的window對象,并且保存在frames集合中
Frameset Example
在使用框架的情況下,瀏覽器中會存在多個Global對象。在每個框架中定義的全局變量會自動成為框架中window對象的屬性。由于每個window對象都包含原生類型的構造函數,因此每個框架都有一套自己的構造函數,這些構造函數一一對應,但并不相等。
窗口位置
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)
這兩個方法可能會被瀏覽器禁用。這兩個方法不適用于框架,只能對最外層的window對象使用
窗口大小在IE9+、Safari和FireFox中,outerWidth和outerHeight返回瀏覽器窗口本身的尺寸。在Opera中,這兩個屬性的值表示頁面視圖容器的大小。而innerWidth和innerHeight則表示該容器中頁面視圖區的大小。在Chrome中,outerWidth、outerHeight與innerWidth、innerHeight返回相同的值,即視口大小而非瀏覽器窗口大小。
使用resizeTo()和resizeBy()方法可以調整瀏覽器窗口的代銷。這兩個方法都接收兩個參數,其中resizeTo()接收瀏覽器窗口的新寬度和高度,而resizeBy()接收新窗口與原窗口的寬度和高度之差。
//調整到100X100 window.resizeTo(100,100); //調整到200X150 window.resizeBy(100,50) //調整到300X300 window,resizeTo(300,300)
這兩種方法也有可能被瀏覽器禁用
導航和打開窗口window.open()方法既可以導航到一個特定的URL,也可以打開一個新的瀏覽器窗口
這個方法接收4個參數:要加載的URL、窗口目標、一個特性字符串以及一個表示新頁面是否取代瀏覽器歷史記錄中當前加載頁面的布爾值。通常只需傳遞第一個參數,最后一個參數只在不打開新窗口的情況下使用。
如果為window.open()傳遞了第二個參數,而且該參數是已有窗口或框架的名稱,那么就會在具有該名稱的窗口或框架中加載第一個參數指定的URL。
如果給 window.open() 傳遞的第二個參數并不是一個已經存在的窗口或框架,那么該方法就會根據在第三個參數位置上傳入的字符串創建一個新窗口或新標簽頁。如果沒有傳入第三個參數,那么就會打開一個帶有全部默認設置(工具欄、地址欄和狀態欄等)的新瀏覽器窗口(或者打開一個新標簽頁根據瀏覽器設置)。
第三個參數是一個逗號分隔的設置字符串,表示在新窗口中都顯示哪些特性。
允許通過設置超時值和間歇時間值來調度代碼在特定的時刻執行。前者是在指定的時間過后執行代碼,后者是每隔指定的時間就執行一次代碼。
超時調用setTimeout(),接收兩個參數:要執行的代碼和以毫秒表示的時間。
間歇調用與超時調用類似,只不過它會按照指定的時間間隔重復執行代碼,直至間歇調用被取消或者頁面被卸載。設置間歇調用的方法是setInterval(),它接收的參數與setTimeout()相同
系統對話框瀏覽器通過alert()、confirm()和prompt()方法可以調用系統對話框向用戶顯示消息。
alert()方法,這個方法接受一個字符串并將其展示給用戶。調用alert()方法的結果就是想用戶顯示一個系統對話框,其中包含指定文本和一個OK("確定")按鈕
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. "); }
prompt()方法,生成提示框,用于提示用戶輸入一些文本。除了顯示OK和Cancel按鈕之外,還會顯示一個文本提示域。默認接收兩個參數,要顯示給用戶的文本提示和文本輸入域的默認值
location對象 查詢字符串參數
創建函數,解析查詢字符串,返回包含所有參數的一個對象
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。
location.assign("http://www.wrox.com");
下面兩行代碼與顯式調用assign()方法的效果完全一樣
window.location = "http://www.wrox.com"; location.;
//假設初始 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 = 8080navigator對象 檢測插件
非IE瀏覽器可以使用plugins數組來達到這個目的
name,插件的名字
description,插件的描述
filename,插件的文件名
length,插件所處理的MIME類型數量
//檢測插件(在 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"));注冊處理程序
registerContentHandler() 和 registerProtocolHandler() 方法。這兩個方法可以讓一個站點指明它可以處理特定類型的信息。
screen對象screen對象基本上只用來表明客戶端的能力,其中包括瀏覽器窗口外部的顯示器的信息,如像素的寬度高度等
history對象
使用 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){ //這應該是用戶打開窗口后的第一個頁面 }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97726.html
摘要:簡介簡史誕生于年,當時主要負責表單的輸入驗證。實現一個完整的由三部分組成核心文檔對象模型瀏覽器對象模型就是對實現該標準規定的各個方面內容的語言的描述。把整個頁面映射為一個多層節點結構。由萬維網聯盟規劃。主要目標是映射文檔的結構。 JavaScript簡介 JavaScript簡史 JavaScript誕生于1995年,當時主要負責表單的輸入驗證。 如果沒有表單驗證的功能,填入信息之...
摘要:匿名函數可以用來模仿塊級作用域來避免這個問題這里是塊級作用域代碼定義并立即調用了一個匿名函數,將函數聲明包含在一對圓括號中,表示它實際上是一個函數表達式,而緊隨其后的另一對圓括號會立即調用這個函數。 函數表達式 遞歸 遞歸函數是在一個函數通過名字調用自身的情況下構成的 function factrial(num){ if(num
摘要:能力檢測無法精確地檢測特定的瀏覽器和版本。用戶代理檢測通過檢測用戶代理字符串來識別瀏覽器。用戶代理檢測需要特殊的技巧,特別是要注意會隱瞞其用戶代理字符串的情況。 客戶端檢測 能力檢測 能力檢測的目的不是識別特定的瀏覽器,而是識別瀏覽器的能力,采用這種方式不必顧忌特定的瀏覽器,只要確定瀏覽器支持的特定的能力,就能給出解決方案,檢測基本模式 if(object.propertyInQu...
摘要:操作類名時可以通過屬性添加刪除和替換類名。如果將可選的參數設置為,則表示盡量將元素顯示在視口中部垂直方向。將元素的內容滾動指定的頁面高度,具體高度由元素的高度決定。 DOM擴展 選擇符API querySelector()方法 querySelector()方法接收一個CSS選擇符,返回與該模式匹配的第一個元素,如果沒有找到匹配的元素,返回null //取得body元素 var b...
摘要:基本概念語法區分大小寫,中的一切變量函數名和操作符都區分大小寫。要將一個值轉換成對應的值,可以調用類型包括整數和浮點數值,基本數值字面量格式是十進制整數,除了十進制外還有八進制十六進制。八進制第一位必須是,十六進制第一位必須是。 基本概念 語法 區分大小寫,ECMAScript中的一切(變量、函數名和操作符)都區分大小寫。函數名不能使用typeof,因為它是一個關鍵字,但typeOf...
閱讀 2837·2023-04-25 20:02
閱讀 1435·2021-11-11 16:55
閱讀 614·2021-09-26 09:46
閱讀 6204·2021-09-22 15:55
閱讀 1823·2021-08-09 13:41
閱讀 1572·2019-08-30 15:52
閱讀 2372·2019-08-30 14:13
閱讀 3289·2019-08-26 13:48