js瀏覽器對象模型(BOM)

瀏覽器對象模型(Browser Object Model,BOM):瀏覽器為js提供的對象集合。

1 windows對象

windows對象:表示瀏覽器的框架以及與其相關的內容,比如滾動條和導航欄圖標等等。或者說windows對象就代表瀏覽器本身。windows對象是個全局對象,他不需要使用名稱訪問自己的屬性和方法。

//下面的代碼本質是相同的
alert("hello!");window.alert("hello!");

windows對象的某些屬性也是對象。這些屬性(對象)有location、history、document、navigator、screen。其中document屬性(對象)又包含forms、images、links等屬性(對象)。

1012348-20161228173446367-844760936.png

2 history對象

history對象跟蹤用戶訪問的每個頁面,這個頁面列表也叫做 history stack。用戶單機瀏覽器的 Back 和 Forward 按鈕,其本質就是在歷史棧里進行切換。

2.1 屬性

屬性注釋
length返回瀏覽器歷史棧中的 URL 數量

2.2 方法

方法注釋
back()加載 history 列表中的前一個 URL
forward()加載 history 列表中的下一個 URL
go()加載 history 列表中的某個具體頁面
history.go(-1);     //后退1個頁面
history.back();history.go(1);       //前進1個頁面
history.forward();history.go(-2);     //后退2個頁面

3 location對象

3.1 屬性

location包含與當前頁面位置有關的信息,常用屬性如下:

//設置或獲取整個 URL 為字符串
console.log(location.href);
/* http://localhost:63342/frontend_projects/test/index.html?_ijt=ll3ai4h2v873l9ukcm2g8a73hr  *///設置或獲取對象指定的文件名或路徑
console.log(location.pathname);
/* /frontend_projects/test/index.html*///設置或獲取與 URL 關聯的端口號碼
console.log(location.port);
/* 63342 *///設置或獲取 URL 的協議部分
console.log(location.protocol);
/* http: *///設置或獲取 href 屬性中在井號“#”后面的分段
console.log(location.hash);
/* *///設置或獲取 location 或 URL 的 hostname 和 port 號碼
console.log(location.host);
/* localhost:63342 *///設置或獲取 href 屬性中跟在問號后面的部分
console.log(location.search);
/* ?_ijt=1lrq8evbm5uovrl1ib8af65g5n */

3.2 方法

方法注釋
reload()重新加載當前文檔
replace()用新的文檔替換當前文檔

使用新頁面替換當前頁面

//方法一:
//新頁面是加在歷史棧頂的,可以使用back()來返回到原來的頁面
location.href ="newPage.html";//方法二:
//使用replace()的本質是用新頁面替換掉歷史棧中的舊頁面,因此無法通過history.back()退回到原來的頁面
location.replace("newPage.html");

navigator對象包含瀏覽器和運行瀏覽器相關的信息

4.1 屬性

屬性注釋
appName返回瀏覽器的模型
appVersion返回瀏覽器的平臺和版本信息
appCodeName返回瀏覽器的代碼名
platform返回運行瀏覽器的操作系統平臺
systemLanguage返回 OS 使用的默認語言
userLanguage返回 OS 的自然語言設置
onLine返回一個布爾值,指示指示瀏覽器是否處于脫機模式
cookieEnabled返回一個布爾值,指示指示瀏覽器是否啟用了cookie
userAgent返回由客戶機發送服務器的 user-agent 頭部的值
var tmp1 = navigator.appName;
//Netscapevar tmp2 = navigator.appVersion;
//5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36var tmp3 = navigator.appCodeName;
//Mozillavar tmp4 = navigator.platform;
//Win32var tmp5 = navigator.systemLanguage;
//undefinedvar tmp6 = navigator.userLanguage
//undefinedvar tmp7 = navigator.onLine;
//truevar tmp8 = navigator.cookieEnabled;
//truevar tmp9 = navigator.userAgent;
//Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36

4.2 方法

方法注釋
javaEnabled()返回一個布爾值,指示瀏覽器是否支持并啟用了 Java

4.3 新增的geolocation

H5中為navigator新增了geolocation屬性,并且geolocation也是對象。它可以獲取并利用設備的物理位置。

geolocation中最常用的就是getCurrentPosition()方法:

//編寫回調函數
//Geolocation.prototype.getCurrentPosition = function(successCallback,errorCallback,options) {};
function geoSucess(position) {var coords = position.coords;var latitude = coords.latitude;var longitude = coords.longitude;var message = "you are at "+latitude+","+longitude;alert(message);
}function geoError(errorObj) {alert(errorObj.message);  //把系統返回的錯誤對象作為回調函數的參數}navigator.geolocation.getCurrentPosition(geoSucess,geoError);

5 screen對象

Screen 對象包含有關客戶端顯示屏幕的信息

詳細信息參考:http://www.w3school.com.cn/jsref/dom_obj_screen.asp

6 document對象

有關document的高級操作就是DOM,后面我會介紹,這里只簡單介紹document對象的基礎用法。

document 是BOM中最常用的一個對象之一。通過這個對象可以訪問到頁面上的HTML元素以及其屬性和方法。

document 有很多關聯的屬性,這些屬性是類似數組的結構,即集合。常用的集合有forms、images、links。

1012348-20161228173209945-363112083.png

6.1 屬性

cookie:設置或返回與當前文檔有關的所有 cookie。該屬性是一個可讀可寫的字符串,可使用該屬性對當前文檔的 cookie 進行讀取、創建、修改和刪除操作。

domain:返回當前文檔的域名。該屬性是一個只讀的字符串,包含了載入當前文檔的 web 服務器的主機名。

lastModified:返回文檔被最后修改的日期和時間。該值來自于 Last-Modified HTTP 頭部,它是由 Web 服務器發送的可選項。

referrer:返回載入當前文檔的文檔的 URL。如果當前文檔不是通過超級鏈接訪問的,則為 null。這個屬性允許客戶端 JavaScript 訪問 HTTP 引用頭部。

title:返回當前文檔的標題

URL:返回當前文檔的 URL。一般情況下,該屬性的值與包含文檔的 Window 的 location.href 屬性相同。不過,在 URL 重定向發生的時候,這個 URL 屬性保存了文檔的實際 URL,而 location.href 保存了請求的 URL。

6.2 方法

getElementById():返回對擁有指定 id 的第一個對象的引用

getElementsByName():返回帶有指定名稱的對象集合

getElementsByTagName():返回帶有指定標簽名的對象集合

close():關閉用 document.open() 方法打開的輸出流,并顯示選定的數據

open() :打開一個流,以收集來自任何 document.write() 或 document.writeln() 方法的輸出

write():向文檔寫 HTML 表達式 或 JavaScript 代碼

writeln():等同于 write() 方法,不同的是在每個表達式之后寫一個換行符

//效果相同
document.writeln("hello!")
document.write("hello!\n")

6.3 集合

6.3.1 images集合

頁面上的所有圖像都保存在images集合中,images[0]表示頁面上的第一個圖片位,依次類推。所以我們可以利用js來按需選擇要顯示的圖像源。

<img name="myImage" src="bg.jpg"/><script>var myImage = ["bj1.gif","bj2.gif","bj3.gif","bj4.gif"];var imgIndex = prompt("Enter a number from 0 to 3","");document.images[0].src = myImage[imgIndex];document.images.length //獲取頁面的圖片位數量</script>
6.3.2 links集合

對于每一個有href屬性的超鏈接元素<a/>,瀏覽器都會創建一個a對象。與images集合類似,頁面上的所有a對象都包含在links集合中。

document.links.length //獲取頁面鏈接的數量

7 瀏覽器測試

常用的代碼測試有兩種:特性檢測瀏覽器嗅探

7.1 特性檢測

特性檢測是指檢測瀏覽器是否支持某個特性的過程。

//檢測瀏覽器是否支持navigator.geolocation
if(navigator.geolocation){//blablabla
}

也可以寫成下面的格式:

if(typeof navigator.geolocation!="undefined"){//blablabla
}//在支持geolocation的瀏覽器中,類型為"object,而在不支持geolocation的瀏覽器中,類型為"undefined"

7.2 瀏覽器嗅探

瀏覽器嗅探就是基于瀏覽器的userAgent字符串的,然而這個字段是可以被修改的,所以非常不可靠。可以通過修改user-Agent來實現瀏覽器和操作系統的偽裝。

//navigator.appName    返回瀏覽器的模型
//對IE返回"Microsoft Internet Explorer",對Firefox、Chrome、Safari則返回"Netscape"//navigator.userAgent   返回瀏覽器與操作系統相關的信息
//Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36

轉載于:https://www.cnblogs.com/whatisfantasy/p/6230327.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285067.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285067.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285067.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Hello Playwright:(8)等待頁面加載

在我們前面的文章中&#xff0c;我們始終使用await page.GotoAsync(url);加載頁面&#xff0c;我們的目的是等待足夠長的時間讓頁面上的元素出現。但是&#xff0c;我們更希望永遠不要因為等待浪費任何時間。WaitUntilGotoAsync方法的定義如下&#xff1a;Task<IResponse?&…

【ArcGIS微課1000例】0012:ArcGIS創建及連接ArcSDE企業級地理數據庫實例

文章目錄 實驗材料實驗過程創建企業級數據庫連接企業級數據庫創建要素類要素入庫實驗材料 ArcGIS:版本為10.2Server.ecp:版本為10.2SQL Server:版本為2008實驗過程 創建企業級數據庫 企業級地理數據庫的創建需要通過工具箱來實現。 數據庫平臺:SQL Server 實例:localhos…

C語言試題172之實現冒泡排序算法

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款刷算法、筆試、面經、拿大公司offer神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:實現冒泡…

Qt移動應用開發(八):實現跨平臺的QML和OpenGL混合渲染

Qt移動應用開發&#xff08;八&#xff09;&#xff1a;實現跨平臺的QML和OpenGL混合渲染 上一篇文章講到了利用C這個橋梁&#xff0c;我們實現了QML和Java的交互。Qt 5大力推崇的QML/JS開發&#xff0c;讓輕量、高速開發的QML/JS打頭陣&#xff0c;讓重量的C撐腰&#xff0c;差…

【HTML5初探之form標簽】解放表單驗證、增加文件上傳、集成拖放

導航【初探HTML5之使用新標簽布局】用html5布局我的博客頁&#xff01;【HTML5初探之form標簽】解放表單驗證、增加文件上傳、集成拖放【HTML5初探之繪制圖像&#xff08;上&#xff09;】看我canvas元素引領下一代web頁面【HTML5初探之繪制圖像&#xff08;下&#xff09;】看…

兩時間差

/** * Comments:返回時間差 * param 兩個字符串類型的時間差(time1-time2),type(D天,H時,M分,S秒,Z-S天時分秒) * return */ public final static SimpleDateFormat SF_SIZE19 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//初始化時間格式 public static String …

【ArcGIS微課1000例】0013:ArcGIS創建色帶圖例(以GlobeLand30土地覆蓋數據為例)

本文以GlobeLand30土地覆蓋數據(2010年)為例,講解在ArcGIS中創建色帶圖例的方法。 案例數據: 色帶圖例: 創建過程: 選擇2010年數據,點擊添加到右側的圖例項。 在圖例向導里面,刪除圖例標題,點擊下一步。

使用.NET IoT驅動超聲波測距傳感器

背景最近買的一堆傳感器到貨了&#xff0c;先來把玩一下超聲波測距傳感器。超聲波傳感器一般用于機器人&#xff0c;小車的避障&#xff0c;物體的測距&#xff0c;液位檢測&#xff0c;停車檢測等領域。HC-SR04知識回顧開始之前我們先復習一下高中的物理知識。原理通過上圖的原…

2019-nCoV 全國新型肺炎疫情每日動態趨勢可視圖

傳染源: 野生動物&#xff0c;可能為中華菊頭蝠 病毒: 新型冠狀病毒 2019-nCoV 傳播途徑: 經呼吸道飛沫傳播&#xff0c;亦可通過接觸傳播 易感人群: 人群普遍易感。老年人及有基礎疾病者感染后病情較重&#xff0c;兒童及嬰幼兒也有發病 潛伏期: 一般為 3~7 天&#xff0c;最長…

C語言試題173之實現插入排序算法

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款刷算法、筆試、面經、拿大公司offer神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:實現排序…

【ArcGIS遇上Python】ArcGIS Python將多個文件夾內的分幅數據整合到同一個文件夾內——以Globeland30數據為例

文章目錄 WinRAR解壓縮ArcGIS Python批處理從Glabeland30官網下載的全球地覆蓋數據包括3年(2000、2010、2020),每一年都是按圖幅存儲的tif格式柵格數據。以2000的數據為例,全球共812個圖幅,每一個圖幅對應一個壓縮包,如下圖所示。 WinRAR解壓縮 在進行數據預處理時,必須…

Delphi中字符串比較大小 VS Oracle-SQL中字符串比較大小

重點注意Delphi和Oracle-SQL中比較字符串時空字符串的根本性的不同Delphi中的字符串比較 Delphi中字符串比較大小的規則&#xff1a;對應位置的字符按照字符編碼值逐個對比&#xff0c;直到遇到可以確定大小關系的就結束比較參考《Delphi的Ord函數和ASCII碼對照表》 常見的一些…

STM8S和STM8L調試串口中斷的注意點

源&#xff1a;STM8S和STM8L調試串口中斷的注意點

C語言試題174之實現快速排序算法

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款刷算法、筆試、面經、拿大公司offer神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:實現快速…

解決slideDown()、slideUp()執行結束后才執行下一次,導致鼠標離開后很久動畫依然在執行的問題...

問題描述&#xff1a; 給一個容器設置了mouseenter時&#xff0c;一個隱藏的box通過slideDown()顯示出來&#xff1b;mouseleave時&#xff0c;通過slideUp()隱藏。 當鼠標不斷在容器上滑過時&#xff0c;會導致鼠標離開很久后&#xff0c;動畫也在不斷執行 解決方法&#xff…

Docker Compose 安裝 Superset

前言動手學 dockerSuperset 是一個強大的在線 SQL 查詢編輯工具&#xff0c;同時也是一個輕量級的 BI 工具&#xff0c;今天我們就來動手學一下用 docker compose 安裝 Superset。安裝動手學 docker安裝 git 并克隆項目&#xff1a;yum install git -ygit clone https://github…

[轉]再見 NoSQL!

為解決大規模數據集合多重數據種類帶來的挑戰&#xff0c;NoSQL 應運而生&#xff0c;但現在卻也遇到了諸多問題&#xff0c;本文作者 Rick Negrin&#xff0c;曾在微軟工作 12 年&#xff0c;并在 SQL Server 團隊度過大部分光陰&#xff0c;他提出&#xff0c;是時候「和 NoS…

【ArcGIS Pro微課1000例】0008:ArcGIS Pro加載不同來源的在線底圖數據

ArcGIS Pro可以很方便的選擇不同來源的在線底圖數據,如中國地圖彩色版、各種形式的天地圖等。 打開ArcGIS Pro,點擊左下角的【設置】。 點擊【選項】。 ArcGIS Pro提供了三種形式的底圖:組織的默認底圖、自定義底圖<

ORA-16198: LGWR received timedout error from KSR

ORA-16198: LGWR received timedout error from KSRORA-16198 意味著主庫上的LOG_ARCHIVE_DEST_2的NET_TIMEOUT設置的太小&#xff0c;導致LNS不能在設置的時間內將日志傳輸到備庫。解決方法是提高NET_TIMEOUT的值到15-20 秒&#xff0c;SQL>ALTER SYSTEM SET LOG_ARCHIVE_D…

php+mysql實現數據分批插入

上周需要將云端的數據有條件的錄入到mysql中&#xff0c;最開始是使用遍歷數據然后一條條的插入的笨方法&#xff0c;結果速度慢的要死&#xff0c;所以又隨便寫了個笨方法2.0&#xff0c;記錄一下自己菜鳥的成長歷程。同時這也是在博客園的第一篇文章&#xff0c;目的僅僅是單…