亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

瀏覽器對象模型(Browser Object Model)

2024-04-27 15:04:49
字體:
來源:轉載
供稿:網友

什么是BOM?

BOM是Browser Object Model的縮寫,簡稱瀏覽器對象模型BOM提供了獨立于內容而與瀏覽器窗口進行交互的對象由于BOM主要用于管理窗口與窗口之間的通訊,因此其核心對象是windowBOM由一系列相關的對象構成,并且每個對象都提供了很多方法與屬性BOM缺乏標準,javaScript語法的標準化組織是ECMA,DOM的標準化組織是W3C(WHATWG,WebHypertextapplicationTechnologyWorkingGroup——網頁超文本應用程序技術工作組目前正在努力促進BOM的標準化)BOM最初是Netscape瀏覽器標準的一部分

基本的BOM體系結構圖

能利用BOM做什么?

BOM提供了一些訪問窗口對象的一些方法,我們可以用它來移動窗口位置,改變窗口大小,打開新窗口和關閉窗口,彈出對話框,進行導航以及獲取客戶的一些信息如:瀏覽器品牌版本,屏幕分辨率。但BOM最強大的功能是它提供了一個訪問HTML頁面的一入口——document對象,以使得我們可以通過這個入口來使用DOM的強大功能?。?!

window對象是BOM的頂層(核心)對象,所有對象都是通過它延伸出來的,也可以稱為window的子對象。由于window是頂層對象,因此調用它的子對象時可以不顯示的指明window對象,例如下面兩行代碼是一樣的:

    document.write("BOM");    window.document.write("BOM");

 

window -- window對象是BOM中所有對象的核心。window對象表示整個瀏覽器窗口,但不必表示其中包含的內容。此外,window還可用于移動或調整它表示的瀏覽器的大小,或者對它產生其他影響。

Javascript中的任何一個全局函數或變量都是window的屬性

window子對象

document 對象frames 對象history 對象location 對象navigator 對象screen 對象

window對象關系屬性

parent:如果當前窗口為frame,指向包含該frame的窗口的frame (frame)self :指向當前的window對象,與window同意。 (window對象)top :如果當前窗口為frame,指向包含該frame的top-level的window對象window :指向當前的window對象,與self同意。opener :當窗口是用javascript打開時,指向打開它的那人窗口(開啟者)

window對象定位屬性

IE提供了window.screenLeft和window.screenTop對象來判斷窗口的位置,但未提供任何判斷窗口大小的方法。用document.body.offsetWidth和document.body. offsetHeight屬性可以獲取視口的大小(顯示HTML頁的區域),但它們不是標準屬性。Mozilla提供window.screenX和window.screenY屬性判斷窗口的位置。它還提供了window.innerWidth和window.innerHeight屬性來判斷視口的大小,window.outerWidth和window.outerHeight屬性判斷瀏覽器窗口自身的大小。

window對象的方法

窗體控制moveBy(x,y)——從當前位置水平移動窗體x個像素,垂直移動窗體y個像素,x為負數,將向左移動窗體,y為負數,將向上移動窗體moveTo(x,y)——移動窗體左上角到相對于屏幕左上角的(x,y)點,當使用負數做為參數時會吧窗體移出屏幕的可視區域resizeBy(w,h)——相對窗體當前的大小,寬度調整w個像素,高度調整h個像素。如果參數為負值,將縮小窗體,反之擴大窗體resizeTo(w,h)——把窗體寬度調整為w個像素,高度調整為h個像素窗體滾動軸控制scrollTo(x,y)——在窗體中如果有滾動條,將橫向滾動條移動到相對于窗體寬度為x個像素的位置,將縱向滾動條移動到相對于窗體高度為y個像素的位置scrollBy(x,y)—— 如果有滾動條,將橫向滾動條移動到相對于當前橫向滾動條的x個像素的位置(就是向左移動x像素),將縱向滾動條移動到相對于當前縱向滾動條高度為y個像素的位置(就是向下移動y像素)窗體焦點控制focus()—— 使窗體或控件獲取焦點blur()——與focus函數相反,使窗體或控件失去焦點新建窗體open()——打開(彈出)一個新的窗體close()——關閉窗體opener屬性——新建窗體中對父窗體的引用,中文"開啟者"的意思

window.open方法語法

    window.open(url, name, features, replace);

 

open方法參數說明

url -- 要載入窗體的URLname -- 新建窗體的名稱(目標,將在a 標簽的target屬性中用到,當與已有窗體名稱相同時將覆蓋窗體內容).open函數默認的打開窗體的方式為target的_blank彈出方式,因此頁面都將以彈出的方式打開features -- 代表窗體特性的字符串,字符串中每個特性使用逗號分隔replace -- 一個布爾值,說明新載入的頁面是否替換當前載入的頁面,此參數通常不用指定

open函數features參數說明,如果不使用第三個參數,將打開一個新的普通窗口

參數名稱類型說明
heightNumber設置窗體的高度,不能小于100
leftNumber說明創建窗體的左坐標,不能為負值
locationBoolean窗體是否顯示地址欄,默認值為no
resizableBoolean窗體是否允許通過拖動邊線調整大小,默認值為no
scrollbarsBoolean窗體中內部超出窗口可視范圍時是否允許拖動,默認值為no
toolbarBoolean窗體是否顯示工具欄,默認值為no
topNumber說明創建窗體的上坐標,不能為負值
statusBoolean窗體是否顯示狀態欄,默認值為no
widthNumber創建窗體的寬度,不能小于100

  特性字符串中的每個特性使用逗號分隔,每個特性之間不允許有空格

open方法返回值為一個新窗體的window對象的引用

對話框alert(str)—— 彈出消息對話框(對話框中有一個“確定”按鈕)confirm(str)—— 彈出消息對話框(對話框中包含一個“確定”按鈕與“取消”按鈕)PRompt(str,defaultValue)——彈出消息對話框(對話框中包含一個“確定”按鈕、“取消”按鈕與一個文本輸入框),由于各個瀏覽器實現的不同,若沒有第二個參數(文本框中的默認值)時也最好提供一個空字符串狀態欄window.defaultStatus 屬性——改變瀏覽器狀態欄的默認顯示(當狀態欄沒有其它顯示時),瀏覽器底部的區域稱為狀態欄,用于向用戶顯示信息window.status 屬性——臨時改變瀏覽器狀態欄的顯示時間等待與間隔函數setTimeout()—— 暫停指定的毫秒數后執行指定的代碼clearTimeout()——取消指定的setTimeout函數將要執行的代碼setInterval()——間隔指定的毫秒數不停地執行指定的代碼clearInterval()——取消指定的setInterval函數將要執行的代碼

setTimeout與setInterval方法有兩個參數,第一個參數可以為字符串形式的代碼,也可以是函數引用,第二個參數為間隔毫秒數,它們的返回是一個可用于對應clear方法的數字ID

    var tid = setTimeout("alert('1')",1000);    alert(tid);    clearTimeout(tid);

 

History對象,在瀏覽器歷史記錄中導航

History 對象的屬性:length 返回瀏覽器歷史列表中的 URL 數量

History 對象的方法

back() 加載 history 列表中的前一個 URLforward() 加載 history 列表中的下一個 URLgo(num) 加載 history 列表中的某個具體頁面

Location 對象

Location 對象的屬性

hash 設置或返回從井號 (#) 開始的 URL(錨)host 設置或返回主機名和當前 URL 的端口號hostname 設置或返回當前 URL 的主機名href 設置或返回完整的 URLpathname 設置或返回當前 URL 的路徑部分port 設置或返回當前 URL 的端口號protocol 設置或返回當前 URL 的協議search 設置或返回從問號 (?) 開始的 URL(查詢部分)

Location 對象的方法

assign() 加載新的文檔,這與直接將一個URL賦值給Location對象的href屬性效果是一樣的reload() 重新加載當前文檔,如果該方法沒有規定參數,或者參數是 false,它就會用 HTTP 頭 If-Modified-Since 來檢測服務器上的文檔是否已改變。如果文檔已改變,reload() 會再次下載該文檔。如果文檔未改變,則該方法將從緩存中裝載文檔。這與用戶單擊瀏覽器的刷新按鈕的效果是完全一樣的。如果把該方法的參數設置為 true,那么無論文檔的最后修改日期是什么,它都會繞過緩存,從服務器上重新下載該文檔。這與用戶在單擊瀏覽器的刷新按鈕時按住 Shift 健的效果是完全一樣。replace() 用新的文檔替換當前文檔,replace() 方法不會在 History 對象中生成一個新的紀錄。當使用該方法時,新的 URL 將覆蓋 History 對象中的當前紀錄。

Navigator對象

Navigator 對象的屬性

appCodeName 返回瀏覽器的代碼名appName 返回瀏覽器的名稱appVersion 返回瀏覽器的平臺和版本信息browserLanguage 返回當前瀏覽器的語言cookieEnabled 返回指明瀏覽器中是否啟用 cookie 的布爾值cpuClass 返回瀏覽器系統的 CPU 等級onLine 返回指明系統是否處于脫機模式的布爾值platform 返回運行瀏覽器的操作系統平臺systemLanguage 返回 OS 使用的默認語言userAgent 返回由客戶機發送服務器的 user-agent 頭部的值userLanguage 返回 OS 的自然語言設置

框架與多窗口通信

子窗口與父窗口

只有自身和使用window.open方法打開的窗口和才能被JavaScript訪問,window.open方法打開的窗口通過window.opener屬性來訪問父窗口。 而在opener窗口中,可以通過window.open方法的返回值來訪問打開的窗口!

框架

window.frames集合:在框架集或包含iframe標簽的頁面中,frames集合包含了對有框架中窗口的引用

    alert(frames.length);//框架的數目    alert(frames[0].document.body.innerHTML);//使用下標直接獲取對框架中窗口的引用    //不但可以使用下標,還可以使用frame標簽的name屬性    alert(frames["frame1"].document.title);

 

在框架集中還可以使用ID來獲取子窗口的引用

    var frame1 =document.getElementById("frame1");//這樣只是獲取了標簽    var frame1Win = frame1.contentWindow;//frame對象的contentWindow包含了窗口的引用    //還可以直接獲取框架中document的引用    var frameDoc = frame1.contentDocument;    alert(frameDoc);//但IE不支持contentDocument屬性

 

子窗口訪問父窗口——window對象的parent屬性

子窗口訪問頂層——window對象的top屬性

瀏覽器檢測

市場上的瀏覽器種類多的不計其數,它們的解釋引擎各不相同,期待所有瀏覽器都一致的支持JavaScript,CSS,DOM,那要等到不知什么時候,然而開發者不能干等著那天。歷史上已經有不少方法來解決瀏覽器兼容問題了,主要分為兩種:1.userAgent字符串檢測,2.對象檢測;當然,也不能考慮所有的瀏覽器,我們需要按照客戶需求來,如果可以確信瀏覽網站的用戶都使用或大部分使用IE瀏覽器,那么你大可放心的使用IE專有的那些豐富的擴展,當然,一旦用戶開始轉向另一個瀏覽,那么痛苦的日子便開始了。下面是市場上的主流瀏覽器列表:

Internet ExplorerMozilla FirefoxGoogle ChromeOperaSafari

注意,瀏覽器總是不斷更新,我們不但要為多種瀏覽器作兼容處理,還要對同一瀏覽器多個版本作兼容處理。比如IE瀏覽器,其6.0版本和7.0版本都很流行,因為微軟IE隨著操作系統綁定安裝(之前也是同步發行,微軟平均每兩年推出一款個人桌面,同樣IE也每兩年更新一次;直到現在,由于火狐的流行,IE工作組才加快IE的更新),所以更新的較慢,6.0版和7.0版有很大差別。

市場上還存在一些其它瀏覽器,但由于它們都是使用的上面所列瀏覽器的核心,或與上面瀏覽器使用了相同的解釋引擎,所以無需多作考慮。下面是主流的瀏覽器解釋引擎列表:

Trident

Trident (又稱為MSHTML),是微軟的窗口操作系統(Windows)搭載的網頁瀏覽器—Internet Explorer的排版引擎的名稱,它的第一個版本隨著1997年10月Internet Explorer第四版釋出,之后不斷的加入新的技術并隨著新版本的Internet Explorer釋出。在未來最新的Internet Explorer第七版中,微軟將對Trident排版引擎做了的重大的變動,除了加入新的技術之外,并增加對網頁標準的支持。盡管這些變動已經在相當大的程度上落后了其它的排版引擎。使用該引擎的主要瀏覽器:IE,TheWorld,MiniIE,Maxthon,騰訊TT瀏覽器。事實上,這些瀏覽器是直接使用了IE核心,因為其userAgent字符串中返回的信息與IE是一模一樣的!

Gecko

壁虎,英文為"Gecko"。Gecko是由Mozilla基金會開發的布局引擎的名字。它原本叫作NGLayout。Gecko的作用是讀取諸如HTML、CSS、XUL和JavaScript等的網頁內容,并呈現到用戶屏幕或打印出來。Gecko已經被許多應用程序所使用,包括若干瀏覽器,例如Firefox、Mozilla Suite、Camino,Seamonkey等等

Presto

Presto是一個由Opera Software開發的瀏覽器排版引擎,供Opera 7.0及以上使用。Presto取代了舊版Opera 4至6版本使用的Elektra排版引擎,包括加入動態功能,例如網頁或其部分可隨著DOM及Script語法的事件而重新排版。Presto在推出后不斷有更新版本推出,使不少錯誤得以修正,以及閱讀Javascript效能得以最佳化,并成為速度最快的引擎。

KHTML

是HTML網頁排版引擎之一,由KDE所開發。KDE系統自KDE2版起,在檔案及網頁瀏覽器使用了KHTML引擎。該引擎以C++編程語言所寫,并以LGPL授權,支援大多數網頁瀏覽標準。由于微軟的Internet Explorer的占有率相當高,不少以FrontPage制作的網頁均包含只有IE才能讀取的非標準語法,為了使KHTML引擎可呈現的網頁達到最多,部分IE專屬的語法也一并支援。目前使用KHTML的瀏覽器有Safari和Google Chrome。而KHTML也產生了許多衍生品,如:WebKit,WebCore引擎

利用userAgent檢測

下面是各大瀏覽器使用彈窗顯示的userAgent字符串

IE瀏覽器:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)

火狐瀏覽器:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4

Opera瀏覽器:Opera/9.64 (Windows NT 5.1; U; Edition IBIS; zh-cn) Presto/2.1.1

Safari瀏覽器:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16

Google Chrome瀏覽器:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.33 Safari/530.5

可以使用下面的代碼進行瀏覽器檢測

    var Browser = {        isIE:navigator.userAgent.indexOf("MSIE")!=-1,        isFF:navigator.userAgent.indexOf("Firefox")!=-1,        isOpera:navigator.userAgent.indexOf("Opera")!=-1,        isSafari:navigator.userAgent.indexOf("Safari")!=-1    };

 

但這樣做并不是萬無一失的,一個特例便是Opera可以使用userAgent偽裝自己。下面是偽裝成IE的userAgent:Mozilla/5.0 (Windows NT 5.1; U; Edition IBIS; zh-cn; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.64;在完全偽裝的情況下,最后的“Opera 9.64”這個字符串也不會出現,但Opera也有特殊的識別自身的方法,它會自動聲明一個opera全局變量!

不但如此,我們的檢測還忽略了一點,就是那些使用相同引擎而品牌不同的瀏覽器,所以,直接檢測瀏覽器是沒有必要的,檢測瀏覽器的解釋引擎才是有必要的!

復制代碼
    var Browser = {        isIE:navigator.userAgent.indexOf("MSIE")>-1 && !window.opera,        isGecko:navigator.userAgent.indexOf("Gecko")>-1 && !window.opera         && navigator.userAgent.indexOf("KHTML") ==-1,        isKHTML:navigator.userAgent.indexOf("KHTML")>-1,        isOpera:navigator.userAgent.indexOf("Opera")>-1    };
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品免费在线视频观看| 中文字幕精品久久| 亚洲综合日韩在线| 亚洲精品免费av| 91在线网站视频| 欧美性生交xxxxx久久久| 国内精品久久久久伊人av| 欧美一级电影在线| 国产69久久精品成人| 国产成人a亚洲精品| 日韩成人中文字幕| 精品国内亚洲在观看18黄| 欧洲美女免费图片一区| 亚洲日韩第一页| 国内精品国产三级国产在线专| 久久综合免费视频| 91九色单男在线观看| 亚洲自拍av在线| 亚洲综合在线中文字幕| 欧美精品亚州精品| 国产精品电影久久久久电影网| 欧美人与物videos| 国产ts人妖一区二区三区| 超在线视频97| 日韩高清电影好看的电视剧电影| 亚洲乱亚洲乱妇无码| 欧美成人午夜影院| 欧美视频二区36p| 中文字幕一区二区三区电影| 萌白酱国产一区二区| 91黄色8090| 亚洲人成网站999久久久综合| 91国自产精品中文字幕亚洲| 久热爱精品视频线路一| 国产精品丝袜久久久久久不卡| 最近2019中文字幕一页二页| 亚洲国产精品va在线看黑人| 亚洲天堂av在线播放| 97在线视频免费观看| 欧美洲成人男女午夜视频| 欧美香蕉大胸在线视频观看| 欧美日韩视频免费播放| 国产亚洲一区精品| 国产亚洲精品成人av久久ww| 国产精品视频网址| 国产精品一区二区三区成人| 精品久久香蕉国产线看观看gif| 久久久国产一区| 欧美精品制服第一页| 精品视频9999| 国产精品入口夜色视频大尺度| 亚洲毛片在线免费观看| 亚洲精品97久久| 国模精品一区二区三区色天香| 超碰精品一区二区三区乱码| 日韩暖暖在线视频| 久久国产精品免费视频| 久久夜色精品亚洲噜噜国产mv| 国产精欧美一区二区三区| 日韩有码在线电影| 欧美电影免费观看高清完整| 成人午夜两性视频| 亚洲人成网站色ww在线| 久久综合久久美利坚合众国| 亚洲成人精品视频在线观看| 国产91精品久久久| 久久久久国产精品免费网站| 久久久99免费视频| 亚洲天堂久久av| 92看片淫黄大片欧美看国产片| 欧美专区中文字幕| 中文字幕亚洲专区| 国产做受高潮69| 亚洲第一精品夜夜躁人人爽| 日韩中文在线不卡| 国产精品成人av性教育| 久久亚洲精品一区二区| 久久久久这里只有精品| 成人免费在线视频网站| 欧美激情在线一区| 久久99精品视频一区97| 久久全国免费视频| 亚洲石原莉奈一区二区在线观看| 亚洲成人网久久久| 久久这里只有精品视频首页| 免费97视频在线精品国自产拍| 亚洲免费电影在线观看| 国产精品久久久久av免费| 91在线高清免费观看| 日本aⅴ大伊香蕉精品视频| 国产精品免费视频xxxx| 色综合久久久888| 欧美日韩在线一区| 美女性感视频久久久| 操人视频在线观看欧美| 92福利视频午夜1000合集在线观看| 国产日韩精品在线观看| 日韩中文字幕精品| 欧美黑人巨大精品一区二区| 欧美日韩精品国产| 欧美富婆性猛交| 欧美又大又硬又粗bbbbb| 中文字幕欧美视频在线| 97激碰免费视频| 成人亚洲欧美一区二区三区| 欧美日韩美女视频| 国产女人18毛片水18精品| 国产91精品久久久久久| 中文字幕国产精品久久| 国产精品99久久99久久久二8| 亚洲激情视频网| 欧美激情videoshd| 青草青草久热精品视频在线观看| 91欧美激情另类亚洲| 九九久久国产精品| 亚洲精品欧美日韩专区| 91免费的视频在线播放| 亚洲自拍高清视频网站| 51精品在线观看| 美女av一区二区三区| 在线视频精品一| 色综合男人天堂| 视频直播国产精品| 成人国产在线激情| 亚洲在线观看视频网站| 26uuu亚洲伊人春色| 欧美黄色小视频| 久热精品视频在线免费观看| 亚洲精品电影久久久| 日韩电影在线观看免费| 日本sm极度另类视频| 97色在线观看| 91精品中国老女人| 国产精品第一第二| 久热精品视频在线观看| 日韩av不卡电影| 国产色综合天天综合网| 国产精品中文字幕久久久| 国产成人短视频| 欧美亚洲在线播放| 欧美孕妇与黑人孕交| 日韩黄色高清视频| 欧美午夜激情视频| 成人亲热视频网站| 国产精品欧美风情| 黑人巨大精品欧美一区二区三区| 亚洲aa中文字幕| 成人午夜一级二级三级| 日本不卡高字幕在线2019| 国产这里只有精品| 亚洲在线免费看| 91网站在线看| 亚洲成人av片在线观看| 亚洲国产精久久久久久久| 欧洲午夜精品久久久| 亚洲久久久久久久久久| 欧美在线视频一区| 亚洲福利在线视频| 日韩精品免费在线视频观看| 久久99国产精品自在自在app| 91欧美视频网站| 亚洲精品久久久久久下一站| 国产精品网站入口| 亚洲2020天天堂在线观看|