天天看點

關于BOM-window對象,history,location,document對象

BOM指的是浏覽器對象模型,是JavaScript的組成之一,提供了獨立于内容的,與浏覽器視窗進行互動的對象模型,就是用來管理視窗與視窗之間的通信,例如彈出一個新浏覽器視窗,改變視窗大小等

  1. 彈出新的浏覽器視窗
  2. 移動,關閉浏覽器視窗以及調整視窗大小
  3. 實作頁面的前進和後退功能
  4. 提供web浏覽器詳細資訊的導航對象
  5. 提供使用者螢幕分辨率詳細資訊的螢幕對象
  6. 支援cookies

    下面是BOM模型圖:

    其主要對象是window對象

    window對象又稱浏覽器對象,當浏覽器打開HTML文檔時,通常會建立一個window對象,如果定義了多個架構,浏覽器會為原始文檔建立一個window對象,同時為每一個架構另外建立一個window對象。

window對象常用屬性

名稱 說明
history 有關客戶通路過的URL的資訊
location 有關目前URL的資訊

window對象的常用方法

名稱 說明
prompt() 顯示可提示使用者輸入的對話框
alert() 顯示一個帶有提示資訊和一個确定按鈕的警示對話框
confirm() 顯示一個帶有提示資訊,确定和取消按鈕的對話框
close() 關閉浏覽器視窗
open() 打開一個新的浏覽器視窗,加載給定URL所指定的文檔
setTimeout() 在指定的毫秒數後調用函數或計算表達式
setInterval() 按照指定的周期來調用函數或表達式

經常看到方法前面沒有window,比如直接調用close(),而不用window.close(),是因為window對象是全局對象,是以可以省略不寫

window常用事件

名稱 說明
onload 一個頁面或圖像完成加載
onmouseover 滑鼠指針移動到某元素之上
onclick 滑鼠單擊某個對象
onkeydown 某個鍵盤按鍵按下
onchange 域的内容被改變

history對象

提供使用者最近浏覽過的URL清單

方法有

名稱 方法
back() 加載history對象清單中的前一個URL
forward() 加載history對象清單中的後一個URL
go() 加載history對象清單中的某個具體的URL

location對象

提供目前頁面的URL資訊,可以重新裝載目前頁面或載入新頁面

location對象屬性

名稱 描述
host 設定或傳回主機名和目前URL的端口号
hostname 設定或傳回目前URL的主機名
href 設定或傳回完整的URL

方法

名稱 描述
reload() 重新加載目前文檔
replace() 用新的文檔替換目前文檔

location對象常用的屬性是href,通過對此屬性設定不同的網址,進而達到跳轉功能

<a href="javascript:location.href='index.html'">檢視index頁面</a>      

document對象

既是window對象的一部分,又代表了整個HTML文檔,可用來通路頁面中的所有元素

常用屬性

屬性 描述
referrer 傳回載入目前文檔的URL
URL 傳回目前文檔的URL

這裡有一個要注意的點:關于referrer,如果目前文檔不是通過超連結通路的,則document.referrer的值為null

上網浏覽某個頁面時,由于不是由指定的頁面進入的,系統将會提醒不能浏覽本頁面或直接跳轉到其他頁面,這樣的功能實際上就是通過referrer屬性來完成的。

<script type="text/javascript">
  var preURL=document.referrer;//載入本頁面文檔的位址
  if(preURL==""){
    document.write("你不是從登入頁面進入,5秒後轉入登入頁面");
    setTimeout("javascript:location.href='login.html',5000");
  }
  
</script>      

document對象的常用方法

方法 描述
getElementById() 傳回對擁有指定id的第一個對象的引用
getElementsByName() 傳回帶有指定名稱的對象的集合
getElementsByTagName() 傳回帶有指定标簽名的對象的集合
write()
  • getElementById()一般用于通路div,圖檔,表單元素,網頁标簽等,但要求通路的對象的id是唯一的
  • getElementsByName()與getElementById()相似,由于一個HTML文檔中的name屬性可能不唯一,是以一般用來通路一組相同name屬性的元素,如具有相同name屬性的單選按鈕等
  • getElementsByTagName()是按标簽來通路頁面元素的,一般用于通路一組相同的元素。如一組 ,一組圖檔等。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
 function changeLink(){
   document.getElementById("node").innerHTML="搜狐";
 }
 function all_input(){
   var allInput=document.getElementsByTagName("input");
   var sStr="";
   for(var i=0;i<allInput.length;i++){
     sStr+=allInput[i].value+"<br/>";
   }
   document.getElementById("s").innerHTML=sStr;
   
 }
 function s_input(){
   var allInput=document.getElementsByName("season");
   var sStr="";
   for(var i=0;i<allInput.length;i++){
     sStr+=allInput[i].value+"<br/>";
   }
   document.getElementById("s").innerHTML=sStr;
   
 }
 
 
 
</script>
</head>
<body>

<div id="node">新浪</div>
<input name="b1" type="button" value="改變層内容" onclick="changeLink()"/><br/>
<br/><input name="season" type="text" value="春">
<input name="season" type="text" value="夏">
<input name="season" type="text" value="秋">
<input name="season" type="text" value="冬">
<br/><input name="b2" type="button" value="顯示input内容" onclick="all_input()"/>
<input name="b3" type="button" value="顯示season内容" onclick="s_input()"/>
<p id="s" ></p> 

</body>
</html>