国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

JavaScript 瀏覽器程序設(shè)計(jì)

2024-04-27 15:06:24
字體:
供稿:網(wǎng)友

不僅javaScript是基于對象的,而且瀏覽器也是由對象組成的。Javascript在瀏覽器中運(yùn)行時,可以訪問瀏覽器的對象,其方式與使用JavaScript的內(nèi)置對象一樣。瀏覽器提供了許多對象,例如window對象對應(yīng)瀏覽器的窗口,document對象對應(yīng)瀏覽器的頁面等。還有許多其他對象可表示頁面上寫入的HTML,例如每個元素都對應(yīng)一個img對象,用于在文檔中插入一幅圖像。

瀏覽器為JavaScript提供的對象集合通常稱為瀏覽器對象模型(Browser Object Model,BOM)。JavaScript的這些附加功能都存在一個潛在的弊端:BOM沒有標(biāo)準(zhǔn)的實(shí)現(xiàn)方式。可以使用哪個對象集合高度依賴于當(dāng)前使用的瀏覽器的類型和版本。如果僅使用BOM的核心功能(所有瀏覽器都有的對象),那么代碼能更好地在不同的瀏覽器和版本中正常運(yùn)行。

瀏覽器對象簡介

JavaScript在頁面中運(yùn)行時,可以訪問大量由Web瀏覽器提供的其他對象。與Math對象類似,會自動創(chuàng)建這些對象,不需要顯示地創(chuàng)建它們。對象及其方法,屬性和事件都已在BOM中映射好。 BOM中常用的對象。在某種程度上來說,BOM的這些部分是所有瀏覽器通用的。 這里寫圖片描述

BOM有一個層次結(jié)構(gòu)。在層級的頂端是window對象,它表示瀏覽器的框架以及與其相關(guān)的所有內(nèi)容,如滾動條和導(dǎo)航欄圖標(biāo)等。頁面包含在窗口框架中。在BOM中,頁面用document對象表示。

windos對象

windos對象代表瀏覽器的框架或窗口,其中包含了頁面。在某種程度上,該對象也表示瀏覽器本身,它包含大量屬性。例如,通過windos對象的屬性,可以確定正在運(yùn)行什么瀏覽器,用戶訪問過的頁面,瀏覽器窗口的大小和用戶屏幕的大小等。還可以使用window對象來訪問或修改瀏覽器狀態(tài)欄中的文本,修改加載的頁面甚至打開新窗口。 window對象是一個全局對象,因此不需要使用其名稱來訪問屬性和方法。實(shí)際上,全局函數(shù)和全局變量(可以在頁面的任何位置訪問)都創(chuàng)建為該全局對象的屬性。 window對象的某些屬性也是對象。所有瀏覽器通用的對象包括document,navigator,history,screen和location。document對象表示頁面;history對象包含用戶訪問頁面的歷史信息;navigator對象包含瀏覽器的信息;screen對象漢堡客戶端顯示能力的信息;location對象包含當(dāng)前頁面的位置信息。

注意:在Web頁面中所使用的函數(shù)名或變量名不能與BOM對象及其屬性和方法的名稱相沖突。因?yàn)樵谌肿饔糜蛑卸x的任何函數(shù)或變量實(shí)際都會添加到window對象中。 例如

var myVariable="hello world!";alert(window.myVariable);

警告框中將會顯示消息”hello world”。

history對象

history對象跟蹤用戶訪問的每個頁面。這個頁面列表常稱為瀏覽器的歷史棧(history stack)。它允許用戶單擊瀏覽器的Back或Forward按鈕,來重新訪問頁面。通過window對象的history屬性可以訪問history對象。 history對象有l(wèi)ength屬性。使用它可以獲得歷史棧中的頁面數(shù)量。history對象有back()和forward()方法。調(diào)用它們時,瀏覽器當(dāng)前加載的頁面位置就變成用戶訪問過的前一個頁面或后一個頁面。history對象的go()方法,帶一個參數(shù),該參數(shù)指定在歷史棧中前進(jìn)或后退幾個頁面。 注意:go(-1)等價(jià)于back(),go(1)等價(jià)于forward()。

location對象

location對象包含大量有關(guān)當(dāng)前頁面位置的有用信息。它不僅包含了頁面的統(tǒng)一資源定位器(Uniform Resource Locator,URL),還包含保存該頁面的服務(wù)器,連接服務(wù)器的端口號以及所使用的協(xié)議。通過location對象的href,hostname,port和PRotocol屬性,就可以獲得這些信息。但這些信息與頁面的訪問位置相關(guān):是從服務(wù)器上加載頁面,還是直接從本地硬盤上加載頁面。 除了獲得當(dāng)前頁面的位置之外,還可以使用location對象的方法來改變當(dāng)前頁面的位置,或刷新當(dāng)前頁面。可以采用兩種方式導(dǎo)航到另一個頁面。一是將location對象的href屬性設(shè)置為指向另一個頁面,二是使用location對象的replace()方法。這兩種方式的效果相同,頁面都改變了位置。但是它們的區(qū)別在于:replace()方法將從歷史棧中移除當(dāng)前頁面,代之以新頁面;而使用href屬性僅把新頁面加在歷史棧的頂部。

例如,要用新頁面myPage.html替換當(dāng)前頁面,使用replace()方法的代碼如下:

location.replace("myPage.html");

如果要加載新頁面,并把它添加到歷史棧的頂部,則可以使用href屬性:

location.href="myPage.html";

navigator對象是window對象的一個屬性,可用于所有瀏覽器。這個對象更恰當(dāng)?shù)拿Q是”瀏覽器對象”,因?yàn)閚avigator對象包含瀏覽器和運(yùn)行瀏覽器的操作系統(tǒng)的大量信息。 navigator對象最常見的用途是處理瀏覽器之間的差異。使用其屬性,可以確定用戶的瀏覽器,瀏覽器的版本和操作系統(tǒng)。接著可以操作這些信息,確保代碼僅在支持它的瀏覽器中運(yùn)行。這種技術(shù)成為“瀏覽器嗅探“,該技術(shù)存在一些限制。一種替代瀏覽器嗅探的技術(shù)是”特性檢測”,這種技術(shù)可以檢測瀏覽器是否支持某個特定的特性。 navigator對象的appName屬性和userAgent屬性在標(biāo)識瀏覽器方面很有用。appName屬性將返回瀏覽器的模型,如對IE返回Microsoft Internet Explorer,對Firefox,Chrome和Safari返回Netscape。userAgent屬性返回一個包含多段信息的字符串,如瀏覽器的版本,操作系統(tǒng)和瀏覽器模型。這個屬性的返回因?yàn)g覽器而異,例如在chrome獲取userAgent字符串:

<body> <script> function getBrowserMsg() { var ua=navigator.userAgent; document.writeln(ua); } getBrowserMsg(); </script>

頁面輸出為: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36

geolocation對象 HTML5規(guī)范中為navigator對象新增了geolocation屬性。主要作用是讓開發(fā)人員獲得并利用設(shè)備和計(jì)算機(jī)的位置。用戶必須給予開發(fā)人員權(quán)限,才能獲取并使用這些信息。例如: 這里寫圖片描述

geolocation對象的核心部分就是它的getCurrentPosition方法。調(diào)用該方法時,必須向它傳遞一個回調(diào)函數(shù),在getCurrentPosition方法的工作成功完成后就會執(zhí)行這個回調(diào)函數(shù)。

function getSuccess(position) { var coords=position.coords; var latitude=coords.latitude; var longitude=coords.longitude; var message="You're at "+latitude+" , "+longitude; document.write(message+"<br>"); }

例如getSuccess函數(shù)就是回調(diào)函數(shù),當(dāng)navigator.geolocation.getCurrentPosition確定計(jì)算機(jī)或設(shè)備的位置時,就會執(zhí)行這個回調(diào)函數(shù)。getSuccess函數(shù)的參數(shù)position是一個對象,其中包含Earthly位置和計(jì)算機(jī)或設(shè)備的海拔高度,可以通過position對象的coords屬性獲得這些信息。latitude表示計(jì)算機(jī)的維度,longitude表示計(jì)算機(jī)的經(jīng)度,altitude代表海拔高度,speed屬性用于獲取設(shè)備/計(jì)算機(jī)的速度。

function getError(errorObj) { document.write(errorObj.message+"<br>"); } navigator.geolocation.getCurrentPosition(getSuccess,getError);

getCurrentPosition()方法的第二個參數(shù)是另外一個回調(diào)函數(shù),當(dāng)發(fā)生錯誤時就會執(zhí)行這個回調(diào)函數(shù)。錯誤回調(diào)函數(shù)僅帶有一個參數(shù),表示getCurrentPosition方法運(yùn)行失敗的原因。它是一個包含兩個屬性的對象。第一個屬性code是一個表示失敗原因的數(shù)值。

說明
1 頁面無權(quán)限獲取設(shè)備/計(jì)算機(jī)的位置
2 發(fā)生了內(nèi)部錯誤
3 在獲取設(shè)備/計(jì)算機(jī)的位置前,所允許的時間已到

第二個屬性為message,表示描述錯誤的人類可讀的信息。

screen對象

window對象的screen對象屬性包含了大量有關(guān)客戶機(jī)顯示能力的信息。其屬性包括height和width,分別表示屏幕的垂直和水平尺寸,單位為像素。screen對象還有colorDepth屬性,表示客戶機(jī)屏幕使用的色彩位數(shù)。要確定屏幕上有多少種顏色,只需要計(jì)算2的colorDepth次方。例如,colorDepth為1,表示只有兩種顏色;而colorDepth為8,表示有256中顏色。目前大部分屏幕的色彩深度都至少是8,通常是24或者32。

document對象

與window對象一樣,document對象可能是BOM中最重要和最常用的對象之一。通過這個對象,可以訪問到頁面上的HTML元素及其屬性和方法。 document對象有很多關(guān)聯(lián)的屬性,它們也是類似于數(shù)組的結(jié)構(gòu),稱為集合。主要的集合有forms,images和links。IE還支持其他很多集合屬性,如all集合屬性,它是頁面上用對象表示的所有元素的數(shù)組。

images集合 可以使用一下標(biāo)記在HTML頁面中插入一幅圖像:

<img alt="USA" name="myImage" src="usa.gif">

瀏覽器通過創(chuàng)建一個img對象myImage,使這個圖像可以通過JavaScript來操作。實(shí)際上,頁面上的每幅圖像都有一個對應(yīng)的img對象。頁面上的每個img對象都保存早images集合中,該集合是document對象的一個屬性。這個集合以及其他集合的用法與數(shù)組的用法相同。頁面上的第一幅圖片在document.images[0]元素中,第二幅圖像在document.images[1]中,以此類推。 img對象有許多非常有用的屬性。其中最重要的是src屬性,改變它就可以改變所加載的圖像。

links集合 對于每個有href屬性的超鏈接元素< a/>,瀏覽器都會創(chuàng)建一個a對象。a對象最重要的屬性是href,它對應(yīng)該標(biāo)記的href屬性。使用該屬性,可以確定該鏈接指向何處,在頁面加載完成后,還可以修改它。頁面上所有a對象的集合都包含在links的集合中。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 云林县| 海城市| 手游| 宁强县| 苗栗市| 石家庄市| 阜新| 北安市| 镇平县| 伽师县| 兴安盟| 栾城县| 宁蒗| 南木林县| 房产| 绵竹市| 新泰市| 巧家县| 明光市| 宁陕县| 屏东市| 南岸区| 慈溪市| 永靖县| 四川省| 泉州市| 滦南县| 武鸣县| 清流县| 株洲市| 汝城县| 鄂温| 阜南县| 临澧县| 祥云县| 伊金霍洛旗| 剑河县| 正镶白旗| 屏边| 汕尾市| 杭锦旗|