JS知識總結之BOM物件

楊耿直小兄弟發表於2019-04-11

window物件

window物件是BOM的核心,window物件指當前的瀏覽器視窗。

window物件方法:

警告訊息對話方塊---alert

語法:

alert(字串或變數); 複製程式碼

確認訊息對話方塊---confirm

confirm 訊息對話方塊通常用於允許使用者做選擇的動作,如:“你對嗎?”等。彈出對話方塊(包括一個確定按鈕和一個取消按鈕)。

語法:

confirm(str);複製程式碼

引數說明:

str:在訊息對話方塊中要顯示的文字
返回值: Boolean值複製程式碼

返回值:

當使用者點選"確定"按鈕時,返回true
當使用者點選"取消"按鈕時,返回false複製程式碼

注: 通過返回值可以判斷使用者點選了什麼按鈕

提問訊息對話方塊---prompt 

prompt彈出訊息對話方塊,通常用於詢問一些需要與使用者互動的資訊。彈出訊息對話方塊(包含一個確定按鈕、取消按鈕與一個文字輸入框)。

語法:

prompt(str1, str2);複製程式碼

引數說明:

str1: 要顯示在訊息對話方塊中的文字,不可修改
str2:文字框中的內容,可以修改複製程式碼

返回值:

1. 點選確定按鈕,文字框中的內容將作為函式返回值
2. 點選取消按鈕,將返回null複製程式碼

開啟新視窗---window.open

open() 方法可以查詢一個已經存在或者新建的瀏覽器視窗。

語法:

window.open([URL], [視窗名稱], [引數字串])複製程式碼

引數說明:

URL:可選引數,在視窗中要顯示網頁的網址或路徑。如果省略這個引數,或者它的值是空字串,那麼視窗就不顯示任何文件。
視窗名稱:可選引數,被開啟視窗的名稱。
    1.該名稱由字母、數字和下劃線字元組成。
    2."_top""_blank""_self"具有特殊意義的名稱。
       _blank:在新視窗顯示目標網頁
       _self:在當前視窗顯示目標網頁
       _top:框架網頁中在上部視窗中顯示目標網頁
    3.相同 name 的視窗只能建立一個,要想建立多個視窗則 name 不能相同。
   4.name 不能包含有空格。
引數字串:可選引數,設定視窗引數,各引數用逗號隔開。複製程式碼

參數列:

例如:開啟http://www.baidu.com網站,大小為300px * 200px,無選單,無工具欄,無狀態列,有滾動條視窗:

<script type="text/javascript"> window.open('http://www.baidu.com','_blank','width=300,height=200,menubar=no,toolbar=no, status=no,scrollbars=yes')
</script>複製程式碼

關閉視窗---window.close

close()關閉視窗

用法:

window.close();   //關閉本視窗複製程式碼

<視窗物件>.close();   //關閉指定的視窗複製程式碼

例如:關閉新建的視窗。

<script type="text/javascript">
   var mywin=window.open('http://www.imooc.com'); //將新打的視窗物件,儲存在變數mywin中
   mywin.close();
</script>複製程式碼

注意:上面程式碼在開啟新視窗的同時,關閉該視窗,看不到被開啟的視窗。

JavaScript 計時器

在JavaScript中,我們可以在設定的時間間隔之後來執行程式碼,而不是在函式被呼叫後立即執行。
計時器型別:
一次性計時器:僅在指定的延遲時間之後觸發一次。
間隔性觸發計時器:每隔一定的時間間隔就觸發一次。
計時器方法:


計時器每隔指定的時間執行程式碼---setInterval()

在執行時,從載入頁面後每隔指定的時間執行程式碼。

語法:

setInterval(程式碼,互動時間);複製程式碼

引數說明:

1. 程式碼:要呼叫的函式或要執行的程式碼串。

2. 互動時間:週期性執行或呼叫表示式之間的時間間隔,以毫秒計(1s=1000ms)。

返回值:

一個可以傳遞給 clearInterval() 從而取消對"程式碼"的週期性執行的值。

呼叫函式格式(假設有一個clock()函式):

setInterval("clock()",1000)
或
setInterval(clock,1000)複製程式碼

我們設定一個計時器,每隔100毫秒呼叫clock()函式,並將時間顯示出來,程式碼如下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計時器</title>
<script type="text/javascript">
  var int=setInterval(clock, 100)
  function clock(){
    var time=new Date();
    document.getElementById("clock").value = time;
  }
</script>
</head>
<body>
  <form>
    <input type="text" id="clock" size="50"  />
  </form>
</body>
</html>複製程式碼

取消計時器---clearInterval()

clearInterval() 方法可取消由 setInterval() 設定的互動時間。

語法:

clearInterval(id_of_setInterval)複製程式碼

引數說明:
id_of_setInterval:由 setInterval() 返回的 ID 值。

每隔 100 毫秒呼叫 clock() 函式,並顯示時間。當點選按鈕時,停止時間,程式碼如下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計時器</title>
<script type="text/javascript">
   function clock(){
      var time=new Date();                     
      document.getElementById("clock").value = time;
   }
// 每隔100毫秒呼叫clock函式,並將返回值賦值給i
     var i=setInterval("clock()",100);
</script>
</head>
<body>
  <form>
    <input type="text" id="clock" size="50"  />
    <input type="button" value="Stop" onclick="clearInterval(i)"  />
  </form>
</body>
</html>複製程式碼

計時器延遲指定時間後執行一次表示式---setTimeout()

setTimeout()計時器,在載入後延遲指定時間後,去執行一次表示式,僅執行一次。

語法:

setTimeout(程式碼,延遲時間);複製程式碼

引數說明:

1. 要呼叫的函式或要執行的程式碼串。
2. 延時時間:在執行程式碼前需等待的時間,以毫秒為單位(1s=1000ms)。

當我們開啟網頁3秒後,在彈出一個提示框,程式碼如下:

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
  setTimeout("alert('Hello!')", 3000 );
</script>
</head>
<body>
</body>
</html>複製程式碼

當按鈕start被點選時,setTimeout()呼叫函式,在5秒後彈出一個提示框。

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function tinfo(){
  var t=setTimeout("alert('Hello!')",5000);
 }
</script>
</head>
<body>
<form>
  <input type="button" value="start" onClick="tinfo()">
</form>
</body>
</html>複製程式碼

要建立一個執行於無窮迴圈中的計數器,我們需要編寫一個函式來呼叫其自身。在下面的程式碼,當按鈕被點選後,輸入域便從0開始計數。

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var num=0;
function numCount(){
 document.getElementById('txt').value=num;
 num=num+1;
 setTimeout("numCount()",1000);
 }
</script>
</head>
<body>
<form>
<input type="text" id="txt" />
<input type="button" value="Start" onClick="numCount()" />
</form>
</body>
</html>複製程式碼

取消計時器---clearTimeout()

setTimeout()和clearTimeout()一起使用,停止計時器。

語法:

clearTimeout(id_of_setTimeout)複製程式碼

引數說明:
id_of_setTimeout:由 setTimeout() 返回的 ID 值。該值標識要取消的延遲執行程式碼塊。

下面的例子和上節的無窮迴圈的例子相似。唯一不同是,現在我們新增了一個 "Stop" 按鈕來停止這個計數器:

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
  var num=0,i;
  function timedCount(){
    document.getElementById('txt').value=num;
    num=num+1;
    i=setTimeout(timedCount,1000);
  }
    setTimeout(timedCount,1000);
  function stopCount(){
    clearTimeout(i);
  }
</script>
</head>
<body>
  <form>
    <input type="text" id="txt">
    <input type="button" value="Stop" onClick="stopCount()">
  </form>
</body>
</html>複製程式碼

History 物件

history物件記錄了使用者曾經瀏覽過的頁面(URL),並可以實現瀏覽器前進與後退相似導航的功能。

注意:從視窗被開啟的那一刻開始記錄,每個瀏覽器視窗、每個標籤頁乃至每個框架,都有自己的history物件與特定的window物件關聯。

語法:

window.history.[屬性|方法]複製程式碼

注意:window可以省略。

History 物件屬性

History 物件方法

使用length屬性,當前視窗的瀏覽歷史總長度,程式碼如下:

<script type="text/javascript">
  var HL = window.history.length;
  document.write(HL);
</script>
複製程式碼

返回前一個瀏覽的頁面---back()

back()方法,載入 history 列表中的前一個 URL。

語法:

window.history.back();複製程式碼

比如,返回前一個瀏覽的頁面,程式碼如下:

window.history.back();複製程式碼

注意:等同於點選瀏覽器的倒退按鈕。

back()相當於go(-1),程式碼如下:

window.history.go(-1);複製程式碼

返回下一個瀏覽的頁面---forward()

forward()方法,載入 history 列表中的下一個 URL。

如果倒退之後,再想回到倒退之前瀏覽的頁面,則可以使用forward()方法,程式碼如下:

window.history.forward();複製程式碼

注意:等價點選前進按鈕。

forward()相當於go(1),程式碼如下:

window.history.go(1);複製程式碼

返回瀏覽歷史中的其他頁面---go()

go()方法,根據當前所處的頁面,載入 history 列表中的某個具體的頁面。

語法:

window.history.go(number);複製程式碼

引數:

瀏覽器中,返回當前頁面之前瀏覽過的第二個歷史頁面,程式碼如下:

window.history.go(-2);複製程式碼

注意:和在瀏覽器中單擊兩次後退按鈕操作一樣。

同理,返回當前頁面之後瀏覽過的第三個歷史頁面,程式碼如下:

window.history.go(3);複製程式碼

Location物件

location用於獲取或設定窗體的URL,並且可以用於解析URL。

語法:

location.[屬性|方法]複製程式碼

location物件屬性圖示:

location 物件屬性:

location 物件方法:

Navigator物件

Navigator 物件包含有關瀏覽器的資訊,通常用於檢測瀏覽器與作業系統的版本。

物件屬性:

檢視瀏覽器的名稱和版本,程式碼如下:

<script type="text/javascript">
   var browser=navigator.appName;
   var b_version=navigator.appVersion;
   document.write("Browser name"+browser);
   document.write("<br>");
   document.write("Browser version"+b_version);
</script>複製程式碼

userAgent

返回使用者代理頭的字串表示(就是包括瀏覽器版本資訊等的字串)

語法

navigator.userAgent複製程式碼

幾種瀏覽的user_agent.,像360的相容模式用的是IE、極速模式用的是chrom的核心。

使用userAgent判斷使用的是什麼瀏覽器(假設使用的是IE8瀏覽器),程式碼如下:

function validB(){ 
  var u_agent = navigator.userAgent; 
  var B_name="Failed to identify the browser"; 
  if(u_agent.indexOf("Firefox")>-1){ 
      B_name="Firefox"; 
  }else if(u_agent.indexOf("Chrome")>-1){ 
      B_name="Chrome"; 
  }else if(u_agent.indexOf("MSIE")>-1&&u_agent.indexOf("Trident")>-1){ 
      B_name="IE(8-10)";  
  }
    document.write("B_name:"+B_name+"<br>");
    document.write("u_agent:"+u_agent+"<br>"); 
} 
複製程式碼

screen物件

screen物件用於獲取使用者的螢幕資訊。

語法:

window.screen.屬性複製程式碼

物件屬性:

螢幕解析度的高和寬

window.screen 物件包含有關使用者螢幕的資訊。
1. screen.height 返回螢幕解析度的高
2. screen.width 返回螢幕解析度的寬
注意:
1.單位以畫素計。
2. window.screen 物件在編寫時可以不使用 window 這個字首。
我們來獲取螢幕的高和寬,程式碼如下:

<script type="text/javascript">
  document.write( "螢幕寬度:"+screen.width+"px<br />" );
  document.write( "螢幕高度:"+screen.height+"px<br />" );
</script>複製程式碼

螢幕可用高和寬度

1. screen.availWidth 屬性返回訪問者螢幕的寬度,以畫素計,減去介面特性,比如工作列。

2. screen.availHeight 屬性返回訪問者螢幕的高度,以畫素計,減去介面特性,比如工作列。

注意:

不同系統的工作列預設高度不一樣,及工作列的位置可在螢幕上下左右任何位置,所以有可能可用寬度和高度不一樣。

我們來獲取螢幕的可用高和寬度,程式碼如下:

<script type="text/javascript">
document.write("可用寬度:" + screen.availWidth);
document.write("可用高度:" + screen.availHeight);
</script>複製程式碼

相關文章