BOM概述

BOM 概述

1. BOM(瀏覽器模型)

Browser Object Moder
瀏覽器對象模型

  • 什么是BOM 脏榆?
  • BOM 是JS 的組成之一,
    • 事項和HTML 的交互
    • BOM 中提供了非常對的對象泽谨,用于訪問瀏覽器的
    • 功能兔毒,這些功能與任何網(wǎng)頁內(nèi)容都無關(guān)
  • BOM 的作用:
    • 將相關(guān)的元素組織包裹起來咖楣,提供給我們

BOM核心--- Window

window 實際上表示瀏覽器的一個實例,
在瀏覽器中处渣,window實際上扮演了兩個角色
它既是通過JS 去訪問瀏覽器窗口的一個接口
又是ECMAScript 中規(guī)定的Global 對象伶贰,
可以通過window 來操作整個瀏覽器

============

  • 拓展:
  • Global 對象
    • 是ECMAScript 總非常特殊的一個對象,
      因為這個對象其實根本不存在罐栈。

    • 但是Global 無法通過new 創(chuàng)建黍衙。
      但是Global 還擁有自己的屬性、方法荠诬、
      甚至還擁有全局對象

    • 一般來說 Global 都是默認在瀏覽器引擎
      啟動時候琅翻,自動初始化完成的

===========
window 對象就是BOM 的核心對象

  • 所有的對象都是由window 對象延伸出來
  • 全局作用域
var age = 18;  //全局變量

function sayAge(){        // 全局方法
 //   console.log(this.age)  //
        console.log(window.age) ;
}
sayAge();
console.log(age);

window.sayAge();

//this 高級的時候會講柑贞,代表

由于window 對象同時扮演者ECMAScript 的Global
對象方椎,因此所有的全局作用域中聲明的全局變量以及函數(shù)
等,全部都會變成window 對象的屬性和方法

3_window窗口大小問題

  1. 針對 IE9+,Chrome,FireFox,Opera 和safari
  • 瀏覽器窗口的內(nèi)部寬度
    window.innerWidth
  • 瀏覽器窗口的內(nèi)部高度
    window.innerHeight
var msg="窗口的高度"+window.innerHeight+
"\n窗口的高度"+window.innerWidth;                   
  1. 針對IE6/ IE7/ IE8 /IE5
  • 支持Chrome 和 FireFox
  • 瀏覽器內(nèi)部高度
    docment.documentElement.clientHight
  • 瀏覽器內(nèi)部寬度
    docment.documentElement.clientWidth
  1. 兼容的版本
var w =window.innerWidth ||
document.documentElement.clientWidth;
var h = 
alert("窗口寬度"+w)

4_調(diào)整窗口大小

調(diào)整窗口大小

  • resizeTO()
    調(diào)整到指定大小

  • resizeBy()

    • 增加指定的寬度和高度(寬度和高度增加10px)
  • 在IE 8 中 還可以使用

5_打開窗口

open()

  • open(URL,name,features)
    該方法用于打開一個新窗口
    查找一個已經(jīng)命名的窗口

  • 參數(shù):

  • URL:

    • 可選參數(shù)
    • 主要聲明了要在瀏覽器新窗口中顯示文檔的
    • URL钧嘶。如果省略該參數(shù)或者該參數(shù)數(shù)值為空
    • 則新窗口不會顯示任何文檔
  • name :

    • 可選參數(shù)
    • 由多個逗號
    • 包括數(shù)字棠众,字母,下劃線
    • 聲明新窗口的名稱
    • 標記<a> <from>的target 屬性
    • 如果指定存在窗口
    • 那么open()方法不在創(chuàng)建新窗口
    • 而是返回對該窗口的引用
    • 同時忽略features
  • features:

    • 可選參數(shù)
    • 聲明標準瀏覽器特征
    • 如果省略有决,則新窗口具有所有瀏覽器
    • 標準特征
    • 如果聲明特殊的特征摄欲,則按照聲明執(zhí)行
      備注:

=========
窗口特征

  • width/height
  • left/top
    • 默認是像素
  • toolbar
    • yes/no
    • 1/0
  • scrollbar
    • yes/no 默認是 yes
    • 1/0
  • location
    • yes/no
    • 1/0
  • status
    • yes/no
    • 1/0
  • fullscreen 是否使用全屏顯示
    • yes/no
    • 1/0 默認是 no
  • menubar 是否顯示菜單欄
    • yes/no
    • 1/0
  • resizable 是否可調(diào)節(jié)尺寸
    • yes/no
    • 1/0
  • titlebar 顯示標題欄
    • yes/no
    • 1/0
<body>
<button onclick="openAnother()">打開新窗口</button>
<script type...>
var win;
function openAnother(){
    win = window.open("http....","","w400,h400,toolbar=no,menubar= no,left=50,top = 500");
}
//關(guān)閉當前窗口
window.close();//一般設置按鈕關(guān)閉轿亮,這里設置了,打開一瞬間就關(guān)閉了胸墙。
</scrlpt>
</body>

6_定時器

window 中的定時器

  • window 對象中的...方法
  • JS 中式單線程語言,但是它允許通過設置超時數(shù)值按咒,
  • 以及間歇時間來調(diào)用代碼在特定時間執(zhí)行
  • 超時迟隅。。在指定的時間后去執(zhí)行某段代碼
  • 周期調(diào)用時指 每隔指定多長時間....
  • 超時調(diào)用
    • window.setIimeout()
  • 周期調(diào)用
    • window.setInterval()
estTimeout(code,millisec)
  • 參數(shù):
    • code
  • 指需要放入的函數(shù)
    • millisec
  • 執(zhí)行參數(shù)1中的代碼
  • 時間單位毫秒(ms)
  • 1s=1000ms
var timeoutId = window.setTimeout(go,3000);

調(diào)用函數(shù)時需要注意:

  • 傳入函數(shù)的時候励七,函數(shù)名千萬不要加括號
  • 因為這個方法不是由我們自己調(diào)用
  • 而是通過引擎去進行調(diào)用
function go{
    window.open("http://baidu.com");
}

//取消超時調(diào)用
//但是如果當前的超時調(diào)用已經(jīng)執(zhí)行智袭,那么無效果

timeoutId.cancel;

上面的內(nèi)容相互疊加就可以了。

定時器

<h1></h1>

var h1 = document.getElementById("time");
window.setIntervall(function){
    var msg = new Date().toLocaleString();
}

講事件還會將

系統(tǒng)對話框

  • alert() 警告框
  • confirm() 提示框(對話框)
  • prompt() 提示框
var msg = prompt("請輸入你的名字")掠抬;

if(msg != null && msg.length > 0){
    comsole.log(msg);
}

設置判斷

該方法用于清除 超時問題

window.clearTimeout(timeoutId)

8_location 對象

location 對象

  • location 對象可以稱為window 的子對象吼野,
  • 也是最有用的BOM 對象之一
  • 我們可以通過window.location 來使用它,
  • 但是一般我們都會將 window省略
  • 提供了域當前窗口加載文檔有關(guān)信息
  • 導航功能
  • 應用場景:
  • 魚魚獲取當前網(wǎng)頁的URL两波,并瀏覽器重定向到新的界面

====

  • location 對象的常用屬性
  • host 主機名稱和URL端口名
  • hostname 主機名
  • href 完整的URL
  • psthname 路徑部分
  • port 端口號
  • protocol 協(xié)議
  • search 查詢
    協(xié)議
document.write("protocol"+location.protocol+
"<br>");

主機名

document.write("hostname"+location.hostname+
"<br>");

將好幾個一塊寫出來

<script...>
document.write("host"+location.host+
"<br>");
document.write("post"+location.post+
"<br>");
document.write("href:"+location.href+
"<br>");
document.write("protocol"+location.protocol+
"<br>");
</script>

HBulider 邊改邊看模式

9_location常用方法

location 常用方法

  1. assign(url) 加載新的文檔
  2. reload(reforce) 重新加載當前文檔
  3. replace(newURL) 用新的文檔替換當前文檔
<body>
<button onclick="" ...>按鈕</button>
</body>
<script...>
function openNewURL(){
    location.assign("http://www.baidu.com");
}
function reload(){
    location.reload(true)
}
</script>

reload(reforce)

  • 重新加載當前文檔
  • 參數(shù):
  • reforce
    • 可選參數(shù)
    • 一般填寫 true
    • 該方法如果沒有規(guī)定參數(shù)瞳步,或者填寫參數(shù)為false
    • 采用HTTP 中的頭if-Modifed-Since
    • 來檢測服務器上文檔是否發(fā)生改變
    • 如果文檔已經(jīng)改變,則會通過reload()方法
    • 重新加載該文檔
    • 如果沒有腰奋,則該方法從緩存中加載文件
  • 該方法如果有參數(shù)单起,則會從服務器中重新加載
  • 該方法如果沒有參數(shù),則會優(yōu)先從緩存器中重新加載

注意:

  • reload()方法調(diào)用之后可能會造成reload 加載順序
  • 之后的文檔不執(zhí)行
  • 所以一般講reload()放在最后


relace()

  • 用新的文檔代替當前文檔
  • 該方法不會在history 對象中生成記錄劣坊。
  • 使用該方法時嘀倒,會直接采用新的URL 覆蓋History

History 對象

  • history 對象包含用戶(當前瀏覽器窗口)中訪問過的URL
  • history 對象是window 對象的一部分
  • 可以進行window.history 進行訪問
  • 屬性:
  • length
  • 方法:
  • back() 加載history 列表中的前一個URL
  • toward()加載history 列表中的下一個URL
  • go()加載history 列表中指定的某一頁面
    • 如果為負數(shù),代表后退
    • 如果為正數(shù)局冰,代表前進
<body>
<button onclick="urlCount()">顯示歷史記錄
<script..>
function urlCount(){
    alert("歷史列表中"+history.length + "個URL")测蘑;
}
function myForward(){
    history.forward();//前進
}
function myBack(){
    history.back();//后退
}
function myGo(){
    history.myGO(-2);//后退兩步
</script>    
    

10_navigator 對象

  • navigator 對象包含關(guān)于瀏覽器的信息
  • navigator 對象包含屬性描述正在使用的瀏覽器
  • 我們根據(jù)這些屬性,進行專門平臺的配置
  • 屬性:
  • appCodeName
  • appName
  • appVersion
  • systemLanguage
  • language
  • onLine
  • cookieEnable
    • Cookie
    • true
    • false
  • platfrom
  • plugins
  • userAgent

用法:

  • navigator.對應的屬性
document.write("appCodeName"+navigator.appCodeName+"<br>");
document.write("appCodeName"+navigator.appCodeName+"<br>");
document.write("appCodeName"+navigator.appCodeName+"<br>");

相應的修改調(diào)用上面的數(shù)
移動端 B 階段
媒體查詢
Chrome和userAgent

Screen 對象

Screen 對象

  • Screen 對象 包含有關(guān)用于屏幕的信息
  • 雖然Screen 對 在JS 中用處不大康二,
  • 但是Screen 對象 包含瀏覽器窗口外部的顯示器信息
  • 例如能夠獲取到相應的 像素寬度和高度等
  • 各個瀏覽器的Screen 對象 都至少包含以下信息
  • =========
  • windth 像素寬度
  • height 像素高度
  • colorDepth 顏色位數(shù)
  • avaiWidth 屏幕的像素寬度減去...任務欄
  • availHeight 屏幕的像素高度減去...任務欄
  document.write("width : " + screen.width +"<br>");
    document.write("height : " + screen.height +"<br>");
    document.write("colorDepth : " + screen.colorDepth +"<br>");
    document.write("availWidth: " + screen.availWidth +"<br>");
    document.write("availHeight: " + screen.availHeight+"<br>");

cookie

注意:本地終端
打開百度
cookie實際是能看到的碳胳。

JQ...
首先:E C S Network T(網(wǎng)絡加載)P Application <-
Application 里面實際是可以看到的

cookie作用 可以作為1.全局變量2. 3. 4. 注意看
cookie缺陷 1.2.3.4. 針對瀏覽器 例如看到的百度這邊
以后工作注意提前進行加密
1.2.。4.56.7.在控制臺會有相應的對應
有心情可以查查赠摇,目前對我們游泳的是刪固逗,增,查

cookie 存儲

有兩個詞必須要給出的
name和value

  1. 參數(shù)1 : cookie 的 name
  2. 參數(shù)2: cookie 的 value
  3. 參數(shù)3: cookie 的 存儲時間(單位 day)
  • cookie 中 name 不同藕帜,那么就可以存儲多個 cookil
function saveCookie(name,value,expireday){
    //聲明一個日期對象
    var date = new Date();
    console.log(date.getDate());
    
    date.setDate(date.getDate()+expireday);
    console.log(date.toGMTString());
}

cookie 的內(nèi)容其實就是一段純文本

encodeURLComponent()

  • 該函數(shù)可以將字符串作為URL 組件去進行編碼
  • 返回值:
  • URLString 的副本烫罩,其中某些字符將其
  • 十六進制轉(zhuǎn)義序列化
        var cookieText = encodeURIComponent(name) + "=" + encodeURIComponent(value) + ";expires = " + date.toGMTString();
            document.cookie = cookieText;
    }
</script>
</html>

儲存

function getCookie(name){
    //先去拿到cookie 中的字符串
    var cookieText = document.cookie;
    //獲取要查找到的cookie 的name 所在的下標
    var index = cookieText.indexOf(name+"=");
    if(index != -1){
        //查找指定的cookie 結(jié)束位置
        var endIndex = 
        cookieText.indexOf
        ...
        //把想要的cookie 中的 value 獲取出來
        
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市洽故,隨后出現(xiàn)的幾起案子贝攒,更是在濱河造成了極大的恐慌,老刑警劉巖时甚,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隘弊,死亡現(xiàn)場離奇詭異哈踱,居然都是意外死亡,警方通過查閱死者的電腦和手機梨熙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門开镣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咽扇,你說我怎么就攤上這事邪财。” “怎么了质欲?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵树埠,是天一觀的道長。 經(jīng)常有香客問我嘶伟,道長怎憋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任九昧,我火速辦了婚禮绊袋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘耽装。我一直安慰自己愤炸,他們只是感情好,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布掉奄。 她就那樣靜靜地躺著规个,像睡著了一般。 火紅的嫁衣襯著肌膚如雪姓建。 梳的紋絲不亂的頭發(fā)上诞仓,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音速兔,去河邊找鬼墅拭。 笑死,一個胖子當著我的面吹牛涣狗,可吹牛的內(nèi)容都是我干的谍婉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼镀钓,長吁一口氣:“原來是場噩夢啊……” “哼穗熬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起丁溅,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤唤蔗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妓柜,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡箱季,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棍掐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藏雏。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖作煌,靈堂內(nèi)的尸體忽然破棺而出诉稍,到底是詐尸還是另有隱情,我是刑警寧澤最疆,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站蚤告,受9級特大地震影響努酸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜杜恰,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一获诈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧心褐,春花似錦舔涎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掘而,卻和暖如春挟冠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背袍睡。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工知染, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人斑胜。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓控淡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親止潘。 傳聞我的和親對象是個殘疾皇子掺炭,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一、JS前言 (1)認識JS 也許你已經(jīng)了解HTML標記(也稱為結(jié)構(gòu))覆山,知道了CSS樣式(也稱為表示)竹伸,會使用HT...
    凜0_0閱讀 2,770評論 0 8
  • 第1章 認識JS JavaScript能做什么?1.增強頁面動態(tài)效果(如:下拉菜單、圖片輪播勋篓、信息滾動等)2.實現(xiàn)...
    mo默22閱讀 1,280評論 0 5
  • JS簡介 外部JavaScript中文件的文件擴展名為.js吧享,如果使用外部文件,那么標簽需要設置它的src屬性為文...
    Grape_葡萄閱讀 932評論 1 6
  • JS Window-瀏覽器對象模型 瀏覽器對象模型(BOM)使JS有能力與瀏覽器對話 由于現(xiàn)代瀏覽器幾乎實現(xiàn)了JS...
    figure_ai閱讀 1,277評論 0 2
  • 什么是BOM BOM:Browser Object Model 是瀏覽器對象模型譬嚣,瀏覽器對象模型提供了獨立與內(nèi)容的...
    LaBaby_閱讀 224評論 0 0