JavaScript中的BOM操作
Bom:浏覽器對象模型(Browser Object Model,簡稱 BOM)提供了獨立于内容而與浏覽器視窗進行互動的對象。描述了與浏覽器進行互動的方法和接口,可以對浏覽器視窗進行通路和操作
一、Window 對象
(1)window.open()
定義和用法
open() 方法用于打開一個新的浏覽器視窗或查找一個已命名的視窗
文法
window.open(URL,name,specs,replace) [預設填寫url,name這兩個參數值即可]
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>BOM操作</title>
<script>
window.onload=function(){
var oBtn=document.getElementById('btn');
oBtn.onclick=function(){
window.open('http://baidu.com','_blank')
//參數一:url位址
//參數二:同a标簽裡面的target屬性;有四個可選值:_blank(新視窗,預設) _self(目前視窗) _parent _top
//一般用window.open()參數填寫兩個即可
}
}
</script>
</head>
<body>
<input type="button" value="click" id="btn">
</html>
(2)window.close()
定義和用法
close() 方法用于關閉浏覽器視窗。
文法
window.close()
說明
方法 close() 将關閉有 window 指定的頂層浏覽器視窗。某個視窗可以通過調用 self.close() 或隻調用 close() 來關閉其自身。
在火狐浏覽器中,隻有通過 JavaScript 代碼打開的視窗才能夠由 JavaScript 代碼關閉。這阻止了惡意的腳本終止使用者的浏覽器。
(3)window.navigator.userAgent
定義:
擷取目前浏覽器版本
(4)window.location
定義:
擷取目前頁面的位址/網址
用法:
不光可以讀、還可以寫 例如:window.location=‘http://baidu.com’ 即可轉到指定頁面
(5)document.documentElement.scrollTop(擷取滾動條位置)
【通俗來講就是:擷取目前頁面的滾動條縱坐标位置】
(6)系統對話框
1》警告框:alert(‘内容’) 【沒有傳回值】
2》選擇框:confirm(‘提問的内容’) 【确認:傳回true;取消:傳回false】
3》輸入框:prompt() 【确認:傳回輸入的内容;取消:傳回null】
二、Document 對象
注:頁面上元素name屬性和JavaScript引用的名稱必須一緻包括大小寫
否則會提示你一個錯誤資訊 “引用的元素為空或者不是對象\\”
———————————————————————
對象屬性
document.title //設定文檔标題等價于HTML的title标簽
document.bgColor //設定頁面背景色
document.fgColor //設定前景色(文本顔色)
document.linkColor //未點選過的連結顔色
document.alinkColor //激活連結(焦點在此連結上)的顔色
document.vlinkColor //已點選過的連結顔色
document.URL //設定URL屬性進而在同一視窗打開另一網頁
document.fileCreatedDate //檔案建立日期,隻讀屬性
document.fileModifiedDate //檔案修改日期,隻讀屬性
document.fileSize //檔案大小,隻讀屬性
document.cookie //設定和讀出cookie
document.charset //設定字元集 簡體中文:gb2312
document.domain //直接擷取域名
———————————————————————
常用對象方法
document.write() //動态向頁面寫入内容
document.createElement(Tag) //建立一個html标簽對象
document.getElementById(ID) //獲得指定ID值的對象
document.getElementsByName(Name) //獲得指定Name值的對象
document.body.appendChild(oTag)
———————————————————————
body-主體子對象
document.body //指定文檔主體的開始和結束等價于body>/body>
document.body.bgColor //設定或擷取對象後面的背景顔色
document.body.link //未點選過的連結顔色
document.body.alink //激活連結(焦點在此連結上)的顔色
document.body.vlink //已點選過的連結顔色
document.body.text //文本色
document.body.innerText //設定body>…/body>之間的文本
document.body.innerHTML //設定body>…/body>之間的HTML代碼
document.body.topMargin //頁面上邊距
document.body.leftMargin //頁面左邊距
document.body.rightMargin //頁面右邊距
document.body.bottomMargin //頁面下邊距
document.body.background //背景圖檔
document.body.appendChild(oTag) //動态生成一個HTML對象
常用對象事件
document.body.οnclick=”func()” //滑鼠指針單擊對象是觸發
document.body.οnmοuseοver=”func()” //滑鼠指針移到對象時觸發
document.body.οnmοuseοut=”func()” //滑鼠指針移出對象時觸發
——————————————————————
location-位置子對象
document.location.hash // #号後的部分
document.location.host // 域名+端口号
document.location.hostname // 域名
document.location.href // 完整URL
document.location.pathname // 目錄部分
document.location.port // 端口号
document.location.protocol // 網絡協定(http:)
document.location.search // ?号後的部分
documeny.location.reload() //重新整理網頁
document.location.reload(URL) //打開新的網頁
document.location.assign(URL) //打開新的網頁
document.location.replace(URL) //打開新的網頁
———————————————————————
selection-選區子對象
document.selection
———————————————————————
images集合(頁面中的圖象)
a)通過集合引用
document.images //對應頁面上的img标簽
document.images.length //對應頁面上img标簽的個數
document.images[0] //第1個img标簽
document.images[i] //第i-1個img标簽
b)通過nane屬性直接引用
img name=”oImage”
document.images.oImage //document.images.name屬性
c)引用圖檔的src屬性
document.images.oImage.src //document.images.name屬性.src
d)建立一個圖象
var oImage
oImage = new Image()
document.images.oImage.src=”1.jpg”
同時在頁面上建立一個img /标簽與之對應就可以顯示
———————————————————————-
forms集合(頁面中的表單)
a)通過集合引用
document.forms //對應頁面上的form标簽
document.forms.length //對應頁面上/formform标簽的個數
document.forms[0] //第1個/formform标簽
document.forms[i] //第i-1個/formform标簽
document.forms[i].length //第i-1個/formform中的控件數
document.forms[i].elements[j] //第i-1個/formform中第j-1個控件
b)通過标簽name屬性直接引用
/formform name=”Myform”>input name=”myctrl”/>/form
document.Myform.myctrl //document.表單名.控件名
c)通路表單的屬性
document.forms[i].name //對應form name>屬性
document.forms[i].action //對應/formform action>屬性
document.forms[i].encoding //對應/formform enctype>屬性
document.forms[i].target //對應/formform target>屬性
document.forms[i].appendChild(oTag) //動态插入一個控件
document.all.oDiv //引用圖層oDiv
document.all.oDiv.style.display=” //圖層設定為可視
document.all.oDiv.style.display=”none” //圖層設定為隐藏
document.getElementId(”oDiv”) //通過getElementId引用對象
document.getElementId(”oDiv”).style=”
document.getElementId(”oDiv”).display=”none”
/*document.all表示document中所有對象的集合
隻有ie支援此屬性,是以也用來判斷浏覽器的種類*/
圖層對象的4個屬性
document.getElementById(”ID”).innerText //動态輸出文本
document.getElementById(”ID”).innerHTML //動态輸出HTML
document.getElementById(”ID”).outerText //同innerText
document.getElementById(”ID”).outerHTML //同innerHTML
三、History 對象
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPR1ENZRUTzcGROBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL3MDO0MjMxcTM5ETOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
history.back() 等同于按浏覽器的後退按鈕
history.forward() 等同于按浏覽器的前進按鈕
history.current 指目前的url(等同于location.href),在曆史中的索引位置總為 0
history.go(-2)或 history.go(“任意.html”) 向前或向後移動,或查找字元串标明的最新url
四、Loaction 對象
location提供了關于目前打開視窗或者特定架構的url資訊。一個多架構的視窗對象在location屬性顯示的是父視窗的URL,每個架構也有一個與之相伴的location對象。
Location.href 傳回整個目前url,若對其指派:location.href=“http://www.baidu.com” 則跳轉其url
location.host 傳回域名和端口号,如:www.baidu.com:80
lcation.hostname 傳回域名
location.port 傳回端口
location.pathname 傳回域名後第一個斜框後的字元串
location.hash 跳到本頁的某個錨
location.search 取url?後的部分
location.protocal協定
hash屬性:
hash标注是一個url很好的習慣用法,它指定浏覽器到一個位于文檔中的anchor位置,相當于一個書簽兒。
host屬性:
描述漁歌url的主機名和端口,隻有端口号是url的一個明确部分時,值中才包括端口号。
hostname屬性:
一個典型的url的主機名是網絡上伺服器的名字,該網絡存儲有你的浏覽器上可以檢視的文檔。對大多數Web站點來說,伺服器名不僅包括域名,也包括www字首,如果端口号是在url中特有的話,主機名并不包括,而是包括在host屬性中。
href屬性:
該屬性提供一個指定視窗對象的整個url的字元串。
pathname屬性:
url的路徑名部分由與伺服器root(根)卷相關的目錄結構組成。根不是目錄的一部分,如果url的路徑是通向根目錄中的一個檔案,那麼location.pathname屬性就是(/)。
port屬性:
端口号很少用到。當指向一個沒有賦給域名的的站點的url中,可以用location.port屬性擷取該值,如果從一個url擷取值并想用那個組建建立一個url,一定要包括伺服器IP位址和段口号,IP位址和段口号之間用(:)分界。
protocol屬性:
包括協定名,且後面緊跟着(:)分節目。
assign方法:
assign(“url”)通過這個方法可以實作把一個新的url賦給location對象。當然你也可以采用直接指派的方法來實作,或者location.href來導航到一個新的網頁。采用assign的方法會使代碼易維護。
reload方法:
這個方法可以把浏覽器可能儲存在記憶體中的元素(在一段記錄中)的文檔設定全部忽略掉,重新打開該文檔,和浏覽器上的重新整理可不一樣。它的效果好像是你選擇了file菜單open file一樣。當然如果你不想這樣,不想這麼做,有一個和這個方法比較類似的方法,就是history.go()方法。
replace方法:
當使用者從目前網頁,跳轉到别的網頁,有時候是不是想讓不能用後退按鈕(Back)看到前一個網頁,告訴你一個方法,就是采用location.replace(“url”)就可以實作這個功能。
reload方法/replace方法的說明
replace()方法在效果上與直接将新URL位址指派給location.href屬性基本一緻,但是使用replace()方法後,我們無法通過浏覽器的“傳回”按鈕來回到上一頁。
reload()方法和浏覽器的“重新整理”功能也有所差別,reload()方法僅僅是重新加載本地的緩存,而不會向伺服器重新送出請求,這點還沒有嚴格的測試過,不過應該在包含有表單的頁面中特别注意。