摘要:在瀏覽器中,對(duì)象有雙重角色,它既是通過(guò)訪問(wèn)瀏覽器窗口的一個(gè)接口,又是規(guī)定的對(duì)象。在集合中,可以通過(guò)數(shù)值索引從開(kāi)始,從左至右,從上到下或者框架名稱來(lái)訪問(wèn)相應(yīng)的對(duì)象。
ECMAScript 是JavaScript 的核心,但如果要在Web 中使用JavaScript,那么BOM(瀏覽器對(duì)象模
型)則無(wú)疑才是真正的核心。BOM 提供了很多對(duì)象,用于訪問(wèn)瀏覽器的功能,這些功能與任
何網(wǎng)頁(yè)內(nèi)容無(wú)關(guān).
BOM 的核心對(duì)象是window,它表示瀏覽器的一個(gè)實(shí)例。在瀏覽器中,window 對(duì)象有雙重角色,
它既是通過(guò)JavaScript 訪問(wèn)瀏覽器窗口的一個(gè)接口,又是ECMAScript 規(guī)定的Global 對(duì)象。這意味著
在網(wǎng)頁(yè)中定義的任何一個(gè)對(duì)象、變量和函數(shù),都以window 作為其Global 對(duì)象
由于 window 對(duì)象同時(shí)扮演著ECMAScript 中Global 對(duì)象的角色,因此所有在全局作用域中聲明
的變量、函數(shù)都會(huì)變成window 對(duì)象的屬性和方法
var age = 29; function sayAge(){ alert(this.age); } alert(window.age); //29 sayAge(); //29 window.sayAge(); //29
全局變量不能通過(guò)delete 操作符刪除,而直接在window 對(duì)象上的定義的屬性可以
var age = 29; window.color = "red"; //在IE < 9 時(shí)拋出錯(cuò)誤,在其他所有瀏覽器中都返回false delete window.age; //在IE < 9 時(shí)拋出錯(cuò)誤,在其他所有瀏覽器中都返回true delete window.color; //returns true alert(window.age); //29 alert(window.color); //undefined
嘗試訪問(wèn)未聲明的變量會(huì)拋出錯(cuò)誤,但是通過(guò)查詢window 對(duì)象,可以知道某個(gè)可能未聲明的變量是否存在
//這里會(huì)拋出錯(cuò)誤,因?yàn)閛ldValue 未定義 var newValue = oldValue; //這里不會(huì)拋出錯(cuò)誤,因?yàn)檫@是一次屬性查詢 //newValue 的值是undefined var newValue = window.oldValue;窗口關(guān)系及框架
如果頁(yè)面中包含框架,則每個(gè)框架都擁有自己的window 對(duì)象,并且保存在frames 集合中。在frames
集合中,可以通過(guò)數(shù)值索引(從0 開(kāi)始,從左至右,從上到下)或者框架名稱來(lái)訪問(wèn)相應(yīng)的window 對(duì)
象。每個(gè)window 對(duì)象都有一個(gè)name 屬性,其中包含框架的名稱
Frameset Example
以上代碼創(chuàng)建了一個(gè)框架集,其中一個(gè)框架居上,兩個(gè)框架居下。對(duì)這個(gè)例子而言,可以通過(guò)
window.frames[0]或者window.frames["topFrame"]來(lái)引用上方的框架。不過(guò),恐怕你最好使用
top 而非window 來(lái)引用這些框架(例如,通過(guò)top.frames[0]),top 對(duì)象始終指向最高(最外)層的框架,也就是瀏覽器窗口,與top相對(duì)的是parent,parent指向的是父框架
使用下列代碼可以跨瀏覽器取得窗口左邊和上邊的位置。
var leftPos = (typeof window.screenLeft == "number") ? window.screenLeft : window.screenX; var topPos = (typeof window.screenTop == "number") ? window.screenTop : window.screenY;系統(tǒng)對(duì)話框
系統(tǒng)對(duì)話框有三個(gè),分別為:alert,confirm,prompt.
alert為系統(tǒng)提示框
alert("nice to meet you");
confirm為確認(rèn)框
var sure = confirm("are you have a good time ?"); if(sure){ alert("yes, you have a good time !"); }
prompt為系統(tǒng)輸入框
var getname = prompt("what"s you name ?","name");//參數(shù)1為提示語(yǔ), 參數(shù)2為默認(rèn)字符. alert(getname);間歇調(diào)用和超時(shí)調(diào)用
間歇調(diào)用使用setTimeout方法,超時(shí)調(diào)用使用setInterval方法
這兩個(gè)方法都有兩個(gè)參數(shù),第一個(gè)參數(shù)為執(zhí)行的代碼或函數(shù),第二個(gè)參數(shù)為執(zhí)行時(shí)間.
當(dāng)然這兩種調(diào)用也有對(duì)應(yīng)的方法來(lái)清除調(diào)用.
setTimeout(function(){ alert("good morning!"); },1000); //一秒后彈出彈框. var count = 0; var interval = setInterval(function(){ count++; if(count > 10){ clearInterval(interval); //清除間歇調(diào)用 } },1000);
setInterval有個(gè)不足之處是后一個(gè)間歇調(diào)用可能會(huì)在前一個(gè)間歇調(diào)用結(jié)束之前啟動(dòng),因此使用setTimeout來(lái)模擬setInterval是不錯(cuò)的選擇.
var count = 0; function doSoming(){ count ++; if(count<=10){ setTimeout(doSoming,1000); } } setTimeout(doSoming,1000);獲取窗口大小
通過(guò)以下代碼可以跨瀏覽器獲取頁(yè)面視口大小
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; } }location對(duì)象
location 是最有用的BOM對(duì)象之一,它提供了與當(dāng)前窗口中加載的文檔有關(guān)的信息,還提供了一些導(dǎo)航功能
以下是location對(duì)象的屬性列表.
hash 返回URL中的hash(#號(hào)后跟零或多個(gè)字符),如果URL中不包含散列,則返回空字符串,例"#contents"
host 返回服務(wù)器名稱和端口號(hào)(如果有).例"www.zhaosywz.com:80"
hostname 返回不帶端口號(hào)的服務(wù)器名稱.例"www.zhaosywz.com"
href 返回當(dāng)前頁(yè)面的完整url.例"www.zhaosywz.com/index.html"
pathname 返回url中的目錄或文件名,例"/category/shoes"
port 返回url的端口號(hào),如果沒(méi)有則返回空字符串.例"8080"
protocol 返回頁(yè)面使用的協(xié)議。通常是http:或https:
search 返回URL的查詢字符串。這個(gè)字符串以問(wèn)號(hào)開(kāi)頭,"?id=100"
盡管"search"屬性可以返回查詢字符串,但為了更加方便的訪問(wèn)其參數(shù),可以通過(guò)下面的代碼將其轉(zhuǎn)化為包含參數(shù)的對(duì)象.
function getQueryStringArgs(){ //取得查詢字符串并去掉開(kāi)頭的問(wèn)號(hào) var qs = (location.search.length > 0 ? location.search.substring(1) : ""), //保存數(shù)據(jù)的對(duì)象 args = {}, //取得每一項(xiàng) items = qs.length ? qs.split("&") : [], item = null, name = null, value = null, //在for 循環(huán)中使用 i = 0, len = items.length; //逐個(gè)將每一項(xiàng)添加到args 對(duì)象中 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; }
通過(guò)以下任何一種方式都會(huì)導(dǎo)致頁(yè)面的跳轉(zhuǎn)或重載
location.;
location.hash = "#section1";
location.search = "?q=javascript";
location.hostname = "www.yahoo.com";
location.pathname = "mydir";
location.port = 8080;
通過(guò)reload()可以重新加載當(dāng)前頁(yè)面
location.reload(); //重新加載(有可能從緩存中加載) location.reload(true);//重新加載(直接從服務(wù)器加載)navigator對(duì)象
最早由 Netscape Navigator 2.0 引入的navigator 對(duì)象,現(xiàn)在已經(jīng)成為識(shí)別客戶端瀏覽器的事實(shí)標(biāo)準(zhǔn),navigator有以下跨瀏覽器屬性和方法.
appCodeName 瀏覽器的名稱。通常都是Mozilla,即使在非Mozilla瀏覽器中也是如此
appName 完整的瀏覽器名稱
appVersion 瀏覽器版本,一般不與實(shí)際的瀏覽器版本對(duì)應(yīng).
cookieEnabled 表示cookie是否啟用
javaEnabled() 表示單簽瀏覽器是否啟用Java
onLine 表示瀏覽器是否連接到了因特網(wǎng)
mimeTypes 在瀏覽器中注冊(cè)的MIME類型數(shù)組
platform 瀏覽器的系統(tǒng)平臺(tái)
plugins 瀏覽器中安裝的插件信息的數(shù)組
userAgent 瀏覽器用戶代理字符串
userAgent是最常用的屬性.
插件檢測(cè)
//檢測(cè)插件(在IE 中無(wú)效) 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; } //檢測(cè)Flash alert(hasPlugin("Flash"));
//檢測(cè)IE 中的插件 function hasIEPlugin(name){ try { new ActiveXObject(name); return true; } catch (ex){ return false; } } //檢測(cè)Flash alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));history對(duì)象
history 對(duì)象保存著用戶上網(wǎng)的歷史記錄,從窗口被打開(kāi)的那一刻算起。
//后退一頁(yè) history.go(-1); //前進(jìn)一頁(yè) history.go(1); //前進(jìn)兩頁(yè) history.go(2); //跳轉(zhuǎn)到最近的包含"wrox.com"字符的頁(yè)面 history.go("wrox.com"); //后退一頁(yè) history.back(); //前進(jìn)一頁(yè) history.forward(); if (history.length == 0){ //這應(yīng)該是用戶打開(kāi)窗口后的第一個(gè)頁(yè)面 }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86096.html
摘要:里面的對(duì)象是什么是瀏覽器對(duì)象,全拼為都有什么對(duì)象是中的頂級(jí)對(duì)象,所有定義在全局作用域中的變量函數(shù)都會(huì)變成對(duì)象的屬性和方法,在調(diào)用的時(shí)候可以省略。 js里面的Bom對(duì)象 showImg(https://segmentfault.com/img/remote/1460000010691602); Bom是什么? Bom是瀏覽器對(duì)象,全拼為Browser Object Model Bom都有...
摘要:里面的對(duì)象什么是是瀏覽器對(duì)象,全拼為瀏覽器對(duì)象模型是的縮寫(xiě),簡(jiǎn)稱瀏覽器對(duì)象模型提供了獨(dú)立于內(nèi)容而與瀏覽器窗口進(jìn)行交互的對(duì)象由于主要用于管理窗口與窗口之間的通訊,因此其核心對(duì)象是由一系列相關(guān)的對(duì)象構(gòu)成,并且每個(gè)對(duì)象都提供了很多方法與屬性缺乏標(biāo) js里面的Bom對(duì)象 什么是Bom Bom是瀏覽器對(duì)象,全拼為(Browser Object Model)瀏覽器對(duì)象模型 BOM是browser...
摘要:瀏覽器對(duì)象模型以對(duì)象為依托,表示瀏覽器窗口以及頁(yè)面可見(jiàn)區(qū)域。同時(shí),對(duì)象還是中的對(duì)象,因而所有全局變量和函數(shù)都是它的屬性,且所有原生的構(gòu)造函數(shù)及其他函數(shù)也都存在于它的命名空間下。本章討論了下列的組成部分。 瀏覽器對(duì)象模型(BOM)以 window 對(duì)象為依托,表示瀏覽器窗口以及頁(yè)面可見(jiàn)區(qū)域。同時(shí), window對(duì)象還是 ECMAScript 中的 Global 對(duì)象,因而所有全局變量和函...
摘要:一對(duì)象獲取獲取服務(wù)器名稱和端口號(hào)獲取服務(wù)器名稱和端口號(hào)獲取服務(wù)器名稱和端口號(hào)獲取不帶端口號(hào)的服務(wù)器名稱獲取不帶端口號(hào)的服務(wù)器名稱獲取整個(gè)獲取整個(gè)返回中的目錄和或文件名返回中的目錄和或文件名返回的端口號(hào)返回的端口號(hào)返回的協(xié)議返回的協(xié)議返回的查 一、location對(duì)象 http://localhost:8881/javascript/BOM/window.html?name=bob&ag...
閱讀 1734·2021-10-18 13:34
閱讀 3921·2021-09-08 10:42
閱讀 1565·2021-09-02 09:56
閱讀 1616·2019-08-30 15:54
閱讀 3137·2019-08-29 18:44
閱讀 3310·2019-08-26 18:37
閱讀 2227·2019-08-26 12:13
閱讀 466·2019-08-26 10:20