欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript 瀏覽器對象模型BOM使用介紹

 更新時間:2015年04月13日 12:45:59   投稿:mdxy-dxy  
這篇文章主要介紹了JavaScript 瀏覽器對象模型BOM使用介紹,需要的朋友可以參考下

BOM也叫做瀏覽器對象模型,它提供了很多對象,用于訪問瀏覽器的功能;這些功能與任何網(wǎng)頁內(nèi)容無關(guān);
BOM缺少規(guī)范,每個瀏覽器提供商都按照自己的想法去擴(kuò)展它,那么瀏覽器共有對象就成了事實的標(biāo)準(zhǔn);

一 window對象

// BOM的核心對象是window,它表示瀏覽器的一個實例;
// window對象處于JavaScript結(jié)構(gòu)的最頂層;
// 對于每個打開的窗口,系統(tǒng)都會自動為其定義window對象;
// window對象同時扮演著ECMAScript中Global對象的角色,因此所有在全局作用域中聲明的變量/函數(shù)都會變成window對象的屬性和方法;
// PS:嘗試訪問未聲明的變量會拋出錯誤,但是通過查詢window對象,可以知道某個可能未聲明的對象是否存在;
  var newValue = oldValue;        // =>ReferenceError:oldValue is not defined;
  var newValue = window.oldValue;     // =>undefined;

1.window對象的屬性和方法
window對象有一系列的屬性,這些屬性本身也是對象;

(1).屬性
屬性 含義
closed 當(dāng)窗口關(guān)閉時為真;
defaultStatus 窗口底部狀態(tài)欄顯示的默認(rèn)狀態(tài)信息;
document 窗口中當(dāng)前顯示的文檔對象;
frames 窗口中的框架對象數(shù)組;
history 保存有窗口最近加載的URL;
length 窗口中的框架數(shù);
location 當(dāng)前窗口中的URL;
name 窗口名;
offscreenBuffering 用于繪制新窗口內(nèi)容并在完成后復(fù)制已存在的內(nèi)容,控制屏幕更新;
opener 打開當(dāng)前窗口的窗口;
parent 指向包含另一個窗口的窗口(由框架使用);
screen 顯示屏幕相關(guān)信息,如高度/寬度(以像素為單位;)
self 指示當(dāng)前窗口;
status 描述由用戶交互導(dǎo)致的狀態(tài)欄的臨時信息;
top 包含特定窗口的最頂層窗口(由框架使用);
window 指示當(dāng)前窗口,與self等效;

(2).方法
alert(text) 創(chuàng)建一個警告對話框,顯示一條信息;
blur() 將焦點(diǎn)從窗口移除;
clearInterval(interval) 清除之前設(shè)置的定時器間隔;
clearTimeOut(timer) 清除之前設(shè)置的超時;
close() 關(guān)閉窗口;
confirm() 創(chuàng)建一個需要用于確認(rèn)的對話框;
focus() 將焦點(diǎn)移至窗口;
open(url,name,[options]) 打開一個新窗口并返回新window對象;
prompt(text,defaultInput) 創(chuàng)建一個對話框要求用戶輸入信息;
scroll(x,y) 在窗口中滾動到一個像素點(diǎn)的位置;
setInterval(expression,milliseconds) 經(jīng)過指定時間間隔計算一個表達(dá)式;
setInterval(function,millisenconds,[arguments]) 經(jīng)過指定時間間隔后調(diào)用一個函數(shù);
setTimeout(expression,milliseconds)        在定時器超過后計算一個表達(dá)式;
steTimeout(function,milliseconds,[arguments]) 在定時器超過后調(diào)用一個函數(shù);
print() 調(diào)出打印對話框;
find() 調(diào)出查找對話框;
// window下的屬性和方法,可以使用window.屬性、window.方法()或者直接屬性、方法()的調(diào)用;
// window.alert(text)=alert(text);

2.系統(tǒng)對話框
瀏覽器通過alert()/confirm()和prompt()方法調(diào)用系統(tǒng)對話框向用戶顯示信息;
系統(tǒng)對話框與瀏覽器中顯示的網(wǎng)頁沒有關(guān)系,也不包含HTML;
它們的外觀由操作系統(tǒng)及(或)瀏覽器設(shè)置決定,而不是由CSS決定;
這幾個方法打開的對話框都是同步和模態(tài)的;也就是說,顯示這些對話框的時候代碼會停止運(yùn)行,而關(guān)掉這些對話框后代碼又會恢復(fù)執(zhí)行;

// 彈出警告
  alert('警告');

// 確認(rèn)和取消
  if(confirm('請確定或取消'){          // confirm()本身有返回值;
    alert('您選擇了確定');           // 按確定,返回true值;
  })else{
    alert('您選擇了取消');           // 按取消,返回false值;
  }

// 輸入提示框
  var num = prompt('請輸入一個數(shù)字',0);     // 第一個參數(shù)是文字提示;第二個參數(shù)是輸入框模式填充值;并返回輸入框中的值;
  alert(num);                 // 將prompt()方法返回的值賦給變量num;并彈出;

// 調(diào)用打印及查找對話框
  print();                   // 打印; 彈出瀏覽器打印窗口;
  find();                   // =>boolean;頁面有匹配的查找內(nèi)容返回true;相對于Ctrl+F;

// 狀態(tài)欄
  defaultStatus = '狀態(tài)欄默認(rèn)文本';       // 瀏覽器底部狀態(tài)欄初始默認(rèn)值;
  status = '狀態(tài)欄文本';            // 瀏覽器底部狀態(tài)欄設(shè)置值;

3.新建窗口(open())

// 使用window.open()方法可以導(dǎo)航到一個特定的URL,也可以打開一個新的瀏覽器窗口;
// 它接收四個參數(shù):
// (1).要加載的URL;
// (2).窗口的名稱或窗口目標(biāo);
// (3).一個特定字符串;
// (4).一個表示新頁面是否取代瀏覽器記錄中當(dāng)前加載頁面的布爾值;
open('www.baidu.com'); // chrome-search://local-ntp/www.baidu.com;打開失敗;需要添加http://;
open('http://www.baidu.com'); // 新建頁面并跳轉(zhuǎn)到百度;
open('http://www.baidu.com','搜索引擎'); // 新建頁面 打開百度頁面 并命名窗口;并不會自動跳轉(zhuǎn);并且再次調(diào)用時只是刷新那個頁面;
open('http://www.baidu.com','_parent'); // 在本頁面打開百度;'_blank'是指定新頁面打開;
// 第三個字符串參數(shù)
設(shè)置 值 說明
width 數(shù)值 新窗口的寬度,不小于100px;
height 數(shù)值 新窗口的高度,不小于100px;
top 數(shù)值 新窗口的Y坐標(biāo),不能是負(fù)值;
left 數(shù)值 新窗口的X坐標(biāo),不能是負(fù)值;
location boolean 是否在瀏覽器窗口中顯示地址欄;不同瀏覽器默認(rèn)值不同;
menubar boolean 是否在瀏覽器窗口顯示菜單欄,默認(rèn)為no;
resizable boolean 是否通過拖動瀏覽器窗口邊框來改變大小;默認(rèn)no;
scrollbars boolean 如果頁面內(nèi)容顯示不下,是否顯示滾動條;默認(rèn)no;
status boolean 是否在瀏覽器窗口中顯示狀態(tài)欄,默認(rèn)no;
toolbar boolean 是否在瀏覽器中顯示工具欄;默認(rèn)no;
fullscreen boolean 瀏覽器窗口是否最大化;僅IE支持;
open('http://www.baidu.com','baidu','width=400,height=400,top=200,left=200,toolbar=yes');

// open()本身返回window對象
var box = open(); // 返回了一個window對象,打開了一個新空白頁面;
box.alert(''); // 然后指定在open()返回的對象打開的新頁面彈窗;

// 字窗口操作父窗口
document.onclick = function(){         // 在新的窗口中點(diǎn)擊docuement對象;
opener.document.write('子窗口讓我輸出的!');// 此時在產(chǎn)生它的父窗口會生成文字內(nèi)容;
}

4.窗口的位置和大小

(1).窗口的位置
// 用來確定和修改window對象(瀏覽器窗口)相對于屏幕的位置:
// IE+Safari+Opera+Chrome都提供了screenLeft和screenTop屬性,
// Firefox提供了screenX和screeY屬性;
// 他們分別表示窗口看相對于屏幕左邊和上邊的位置;
  
// 確定窗口的位置=>IE
  alert(screenLeft);              // 瀏覽器左側(cè)離屏幕的距離;
// 確定窗口的位置=>Firefox
  alert(screenX);                // 瀏覽器左側(cè)離屏幕的距離;

// 跨瀏覽器的方法
  var leftX = (typeof screenLeft == 'number') ? screenLeft : screenX;
  // 判斷檢測的screenLeft是否是數(shù)值,若是則使用screenLeft的值,否則使用screenX的值;

(2).窗口的大小
// 檢測瀏覽器窗口本身及邊框的尺寸:outerWidth和outerHeight;
  alert(outerWidth);
  alert(outerHeight);
// 檢測頁面大小屬性:innerWidth和innerHeight;
  alert(innerWidth);
  alert(innerHeight);
// PS:IE沒有提供當(dāng)前瀏覽器窗口尺寸的屬性; 在DOM中有提供相關(guān)的方法;

// 在IE及其他瀏覽器中,提供了:document.documentElement.clientWidth和document.documentElement.clientHeight;來保存頁面窗口的信息;
// PS:在IE6中,上述屬性在標(biāo)準(zhǔn)模式下才有效;如果是怪異模式,就必須通過document.body.clientWidth和document.body.clientHeight;
// 如果是Firefox等瀏覽器,直接使用innerWidth和innerHeight;
  var width = window.innerWidth;        // 這里要加window,因為IE會無效;
  var height = window.innerHeight;
  if(typeof width != 'number'){         // IE6瀏覽器
    if(document.compatMode == 'CSS1Compat'){ // 判斷是IE6標(biāo)準(zhǔn)模式;使用documentElement;
      width = document.documentElement.clientWidth;
      height = document.documentElement.clientHeight;
    }else{                  // 否則是IE6非標(biāo)準(zhǔn)模式;使用body;
      width = document.body.clientWidth;
      height = document.body.clientHeight;
    }
  }
  // PS:以上方法可以通過不同瀏覽器取得各自的瀏覽器窗口可視部分的大小;
  // document.compatMode可以確定頁面是否處于標(biāo)準(zhǔn)模式;
// 調(diào)整瀏覽器位置;
  moveTo(0,0);                 // 移動到(0,0)坐標(biāo);IE有效;
  moveBy(10,10);                // 向下和向右分別移動10px;IE有效;

// 調(diào)整瀏覽器大小
  resizeTo(200,200);              // 調(diào)整大小;
  resizeBy(200,200);              // 擴(kuò)展收縮大小;

5.間歇調(diào)用和超時調(diào)用
1 // JavaScript是單線程語言,但它允許通過設(shè)置超時值和間歇時間值來調(diào)度代碼在特定的時刻執(zhí)行;
2 // 超時值:在指定的時間過后執(zhí)行代碼;
3 // 間隔值:每隔指定的時間就執(zhí)行一次代碼;

// 超時調(diào)用使用window對象的setTimeout()方法;
// 它接受兩個參數(shù):要執(zhí)行的代碼和毫秒數(shù);
  setTimeout(function(){            // 直接使用函數(shù)傳入的方法,擴(kuò)展性好,性能更加;
    alert('警告!');
  },1000);
// 調(diào)用setTimeout()之后,該方法會返回一個數(shù)值ID,表示超時調(diào)用;
// 這個超時調(diào)用的ID是計劃執(zhí)行代碼的唯一標(biāo)識符,可以通過它來取消超時調(diào)用;
// 要取消尚未執(zhí)行的超時調(diào)用計劃,可以調(diào)用clearTimeout()方法并將相應(yīng)的超時調(diào)用ID作為參數(shù)傳遞給它;
  var box = setTimeout(function(){       // 將超時調(diào)用的ID賦值給變量box;
    alert('超時調(diào)用');
  },1000);
  clearTimeout(box);              // 將ID傳入取消調(diào)用方法;
// 間歇調(diào)用使用window對象的setInterval()方法;
// 它會按照指定的時間間隔重復(fù)執(zhí)行代碼,直至間歇調(diào)用被取消或頁面被卸載;
// 它接收的參數(shù)與setTimeout()相同;
  var pox = setInterval(function(){
    alert('間隔調(diào)用');
  },1000);
  clearInterval(pox);              // 取消間歇調(diào)用;

// 利用setInterval()設(shè)置一個5秒的定時器;
  var num = 0;                 // 設(shè)置起始秒;
  var max = 5;                 // 設(shè)置終止秒;
  setInterval(function(){
    num++;                  // 遞增num;
    if(num == max){              
      clearInterval(this);         // 取消間隔調(diào)用,this表示方法本身;一直跟蹤間隔調(diào)用的ID;
      alert('5秒后彈窗');
    }
  },1000);
// 一般使用超時調(diào)用來模擬間隔調(diào)用是一種最佳模式;
// 因為使用間隔調(diào)用需要根據(jù)情況來取消ID,并且可能造成同步的一些問題;后一個間歇調(diào)用可能會在前一個間歇調(diào)用結(jié)束之前啟動;
  var num = 0;
  var max = 5;
  function box(){
    num++;
    if(num == max){
      alert('5秒后彈窗');
    }else{
      setTimeout(box,1000);          // 隔1秒之后再次執(zhí)行一個超時調(diào)用;
    }
  };
  setTimeout(box,1000);              // 執(zhí)行定時器; 
  // PS:在使用超時調(diào)用時,沒必要跟蹤超時調(diào)用ID,因為每次執(zhí)行之后,如果不再設(shè)置另一個超時調(diào)用,調(diào)用就會自動停止;

二 location對象

location是BOM對象之一,它提供了與當(dāng)前窗口中加載的文檔有關(guān)的信息,還提供了一些導(dǎo)航功能;
事實上,location對象是window對象的屬性,也是document對象的屬性;
alert(location); // 獲取當(dāng)前的URL

(1).location對象的屬性
屬性 描述的URL內(nèi)容
hash 如果該部分存在,表示錨點(diǎn)部分;
host 主機(jī)名:端口號;
hostname 主機(jī)名;
href 整個URL;
pathname 路徑名;
port 端口號;
protocol 協(xié)議部分;
search 返回URL的查詢字符串('?gws_rd=ssl#safe=strict&q=ab'),這個字符串以問號開頭;
(2).location對象的方法
assign() 跳轉(zhuǎn)到指定頁面,與href等效;
reload() 重載當(dāng)前URL;
replace() 用新的URL替換當(dāng)前頁面;

location.hash = '#1'; // 設(shè)置#后的字符串,并跳轉(zhuǎn);
location.hostname = 'Jack'; // 設(shè)置主機(jī)名;
location.search = '?id=5'; // 設(shè)置?后的字符串;

// 在Web開發(fā)中,我們經(jīng)常需要獲取諸如?id=5&search=ok這種類型的URL的鍵值對;
// 通過location,我們可以寫一個函數(shù),來一一獲取;
  function getArgs(){
    // 創(chuàng)建一個存放鍵值對的數(shù)組;
    var args = [];
    // 去除?號;
    var qs = location.search.length>0?location.search.substring(1):'';
    // 按&字符串拆分?jǐn)?shù)組;
    var items = qs.split('&');
    var item = null, name = null, value = null;
    //遍歷
    for(var i = 0; i<items.length; i++){
      item = items[i].split('=');
      name = decodeURIComponent(item[0]);  // 因為查詢字符串被瀏覽器編碼過;
      value = decodeURIComponent(item[1]);// 每個查詢字符串參數(shù)都變成了args對象的屬性;
      // 把鍵值對存放到數(shù)組中;
      args[name] = value;
    }
    return args;
  }
  var args = getArgs();
  alert(args['id']);              // 獲取URL中id對應(yīng)的值;

復(fù)制代碼 代碼如下:

location.assign('http://www.baidu.com');      // 跳轉(zhuǎn)到指定的URL;2
location.reload();                            // 最有效的重新加載,有可能從緩存加載;
location.reload(true);                        // 強(qiáng)制加載,從服務(wù)器源頭重新加載;5
locatioin.replace('http://www.baidu.com');    // 在本頁跳轉(zhuǎn)到百度頁面,并且可以避免產(chǎn)生跳轉(zhuǎn)的歷史記錄;

三 history對象

history對象是window對象的屬性,它保存著用戶上網(wǎng)的記錄,從窗口被打開的那一刻算起;

(1).history對象的屬性

length                 history對象中的記錄數(shù);
(2).history對象的方法
back()                前往瀏覽器歷史條目前一個URL,類似后退;
forward()             前往瀏覽器歷史條目下一個URL,類似前進(jìn);
go(num)               瀏覽器在history對象中向前或向后;

復(fù)制代碼 代碼如下:

    function back(){
        history.back();
    }
    function forward(){
        history.forward();
    }
    function go(num){
        history.go(num);
    }
// PS:可以通過判斷history.length == 0,得到是否有歷史記錄;

四 小結(jié)

 瀏覽器對象模型(BOM)以window對象為依托,表示瀏覽器窗口以及頁面可見區(qū)域;
 同時window對象還是ECMAScript中的Global對象,因而所有全局變量和函數(shù)都是它的屬性,且所有原生的構(gòu)造函數(shù)及其他函數(shù)也都存在于它的命名空間下;
 (1).使用location對象可以通過編程方式來訪問瀏覽器的導(dǎo)航系統(tǒng);設(shè)置相應(yīng)的屬性,可以逐段或整體性地修改瀏覽器的URL;
 (2).調(diào)用replace()方法可以導(dǎo)航到一個新的URL,同時該URL會替換瀏覽器歷史記錄中當(dāng)前顯示的頁面;
 (3).screen對象:保存著與客戶端顯示器有關(guān)的信息,這些信息一般只用于站點(diǎn)分析;
 (4).history對象:為訪問瀏覽器的歷史記錄開了一個小縫隙,開發(fā)人員可以據(jù)此判斷歷史記錄的數(shù)量,也可以在歷史記錄中向后或向前導(dǎo)航到任意頁面;

相關(guān)文章

最新評論