2018-12-17

8.4 screen對象

Javascript中有幾個對象在變成重用處不大,而screen對象就是其中之一。
screen對象基本上只用來表明客戶端的能力,其中包括瀏覽器窗口外部的顯示器的信息,如像素寬度和高度等。
每個瀏覽器中的screen對象都包含著不相同的屬性,下表列出了所有屬性及支持相應(yīng)屬性的瀏覽器。


image.png

image.png

這些信息集中出現(xiàn)在測定客戶端能力的站點跟蹤工具中,但通常不會用于影響功能。
不過有時候也可能會用到其中的信息來調(diào)整瀏覽器窗口大小,使其占據(jù)屏幕的可用空間。例:

window.resizeTo(screen.availWidth,screen.availHeight)
//但是很多瀏覽器都會禁用調(diào)整瀏覽器窗口大小的能力,因此上面這行代碼不一定在所有環(huán)境下有效。

設(shè)計移動設(shè)備的屏幕大小時,情況有點不一樣。運行IOS的設(shè)備始終會像是把設(shè)備豎著拿在受理一樣,因此返回的值是768*1024。而Android設(shè)備則會相應(yīng)調(diào)用screen.width和screen.height的值。

8.5 history對象

history對象保存著用戶上網(wǎng)的歷史記錄,從窗口被打開的那一刻算起。
因為history是window對象的屬性,因此每個瀏覽器窗口、標(biāo)簽頁、框架都有自己的history對象與特定的 window對相關(guān)聯(lián)。
處于安全問題,開發(fā)人員無法得知用戶瀏覽過的URL

使用go()方法可以在用戶的歷史記錄中任意跳轉(zhuǎn),可以向后也可以向前。這個方法接受一個參數(shù),表示向后或向前跳轉(zhuǎn)的頁面數(shù)的一個整數(shù)值,例:

//后退一頁
history.go(-1);

//前進(jìn)一頁
history.go(1);

//前進(jìn)兩頁
history.go(2);

也可以給go()方法傳遞一個字符串參數(shù),此時瀏覽器會跳轉(zhuǎn)到歷史記錄中包含該字符串的第一個位置——可能后退,也可能前進(jìn),具體要看哪個位置最近。如果歷史記錄中不包含該字符串,那么這個方法說明也不做,例:

//跳轉(zhuǎn)到最近的wrox.com頁面
history("wrox.com")

另外,還可以使用兩個簡寫方法back()和forward()來代替go()。

//后退一頁
history.back();

//前進(jìn)一頁
history.forward();

除了上述的方法外,history對象還有一個length屬性,保存著歷史記錄的數(shù)量。這個數(shù)量包括所有歷史記錄,即所有向后和向前的記錄。
對于加載到窗口、標(biāo)簽頁或框架中的一個頁面而言,history.length等于0。
通過像下面這樣測試該屬性的值,可以確定用戶是否一開始就打開了你的頁面:

if(history.length == 0){
    //這應(yīng)該是用戶打開窗口后的第一個頁面
}

雖然history并不常用,但是在創(chuàng)建自定義的“后退”和“前進(jìn)”按鈕,以及檢測當(dāng)前頁面是不是用戶歷史記錄中的 第一個頁面時,還是必須使用它。

8.6小結(jié)

瀏覽器對象模型(BOM)以window對象為依托,表示瀏覽器窗口以及頁面可見區(qū)域。同時,window對象還是ECMAScript中的Global對象,因而所有全局變量和函數(shù)都是它的屬性,且所有原生的構(gòu)造函數(shù)及其他函數(shù)也都存在于它的命名空間下。

◆ 在使用框架時,每個框架都有自己的window對象以及所有原生構(gòu)造函數(shù)及其他函數(shù)的副本。每個框架都保存在frames集合中,可以通過位置或通過名稱來訪問
◆ 有一些窗口指針,可以用來引用其他框架,包括父框架。
◆ top對象始終指向最外圍的框架,也就是整個瀏覽器窗口。
◆ parent對象表示包含當(dāng)前框架的框架,而self對象則回指window。
◆ 使用location對象可以通過編程方式來訪問瀏覽器的導(dǎo)航系統(tǒng)。設(shè)置相應(yīng)的屬性,可以逐段或整體性的修改瀏覽器的URL
◆ 調(diào)用replace()方法可以導(dǎo)航到一個新URL,同時該URL會替換瀏覽器歷史記錄中當(dāng)前顯示的頁面。
◆ navigator對象提供了與瀏覽器有關(guān)的信息。到底提供哪些信息,很大程度上取決于用戶的瀏覽器;不過,也有一些公共的屬性存在于所有瀏覽器中。
BOM還有兩個對象:screen和history,但是它們的功能有限。
screen對象中保存著與客戶端顯示器有關(guān)的信息,這些信息一般只用于站點分析。
history對象為訪問瀏覽器的歷史記錄開始了一個小縫隙,開發(fā)人員可以據(jù)此判斷歷史記錄的數(shù)量,也可以在歷史記錄中向后或向前導(dǎo)航到任意頁面。



第10章 DOM

DOM(文檔對象模型)是針對HTML和XML文檔的一個API(應(yīng)用程序編程接口)。DOM描繪了一個層次化的節(jié)點樹,允許開發(fā)人員添加、移除和修改頁面的某一部分。
DOM脫胎于Netscape及微軟公司創(chuàng)始的DHTML(動態(tài)HTML),但現(xiàn)在它已經(jīng)成為表現(xiàn)和操作頁面標(biāo)記的真正的跨平臺、語言中立的方式。

1988年10月日DOM1級規(guī)范成為W3C的推薦標(biāo)準(zhǔn),為基本的文檔結(jié)構(gòu)及查詢提供了接口。

IE中所有DOM對象都是以COM對象的形式實現(xiàn)的。這意味著IE中的DOM對象與原生Javascript對象的行為或活動特點并不一致。

10.1 節(jié)點層次

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ??ECMAScript 是 JavaScript 的核心,但如果要在 Web 中使用 JavaScript,那么...
    霜天曉閱讀 953評論 0 0
  • ECMAScript 是 JavaScript 的核心,但如果要在 Web 中使用 JavaScript,那么 B...
    劼哥stone閱讀 886評論 2 5
  • 電量消耗的全過程分析 1.喚醒CPU耗電情況,例如:打開屏幕,所有要使用CPU/GPU工作的動作都會喚醒屏幕,都會...
    孤獨的根號十二閱讀 1,067評論 0 2
  • 六月 站在歲月里看時光 云彩,藍(lán)天,山川 在詩行里匆匆走過 一道幽暗的影子 潛伏了許多年 在追夢的路上 輪回或是新...
    雨韓閱讀 426評論 16 12
  • 馬特?普魯默(Matt Plummer)創(chuàng)立的Zarvana是一家?guī)椭藗兲嵘实墓尽?提高效率的5個建議: ...
    崇選閱讀 194評論 0 0

友情鏈接更多精彩內(nèi)容