" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript之BOM構(gòu)成和常用事件詳解

 更新時(shí)間:2021年12月03日 15:13:45   作者:bear*6  
這篇文章主要為大家介紹了JavaScript BOM構(gòu)成和常用事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

一、BOM

1、什么是BOM?

BOM(Browser Object Model)即瀏覽器對(duì)象模型,它提供了獨(dú)立于內(nèi)容而與瀏覽器窗口進(jìn)行交互的對(duì)象,其核心對(duì)象是 window。

BOM 由一系列相關(guān)的對(duì)象構(gòu)成,并且每個(gè)對(duì)象都提供了很多方法與屬性。

BOM 缺乏標(biāo)準(zhǔn),JavaScript 語(yǔ)法的標(biāo)準(zhǔn)化組織是 ECMA,DOM 的標(biāo)準(zhǔn)化組織是 W3C,BOM 最初是Netscape 瀏覽器標(biāo)準(zhǔn)的一部分。

2、BOM的構(gòu)成

如下圖所示:

在這里插入圖片描述

window 對(duì)象是瀏覽器的頂級(jí)對(duì)象,它具有雙重角色。

它既是 JS 訪問(wèn)瀏覽器窗口的一個(gè)接口。又是一個(gè)全局對(duì)象。定義在全局作用域中的變量、函數(shù)都會(huì)變成 window 對(duì)象的屬性和方法。

在調(diào)用的時(shí)候可以省略 window,alert()、prompt()等都屬于 window 對(duì)象方法。

我們可以調(diào)用window對(duì)象來(lái)看看其有哪些屬性和方法。

如下所示:

console.log(window);

截取部分如下所示:

在這里插入圖片描述

可見,定義在全局作用域中的變量、函數(shù)都會(huì)變成 window 對(duì)象的屬性和方法。

二、window對(duì)象的常用事件

1、窗口加載事件

我們知道在javascript的執(zhí)行機(jī)制中,代碼的執(zhí)行是按照從上往下的順序執(zhí)行的,所以如果我們要給一個(gè)按鈕添加點(diǎn)擊事件,只能先設(shè)置按鈕,然后獲得按鈕在進(jìn)行操作,如下:

<body>
    <button>點(diǎn)擊</button>
    <script>
        var btn = document.querySelector('button');
        btn.onclick = function(){
            alert('您剛點(diǎn)擊了一下!')
        }
    </script>
</body>

點(diǎn)擊效果為:

在這里插入圖片描述

如果我們想要把綁定的點(diǎn)擊事件放置到頁(yè)面前面,很明顯是無(wú)法操作的。那應(yīng)該怎么辦呢?這個(gè)時(shí)候就可以通過(guò)我們的窗口加載事件來(lái)完成。

window.onload 就是窗口 (頁(yè)面)加載事件,當(dāng)文檔內(nèi)容完全加載完成會(huì)觸發(fā)該事件(包括圖像、腳本文件、CSS 文件等), 就調(diào)用的處理函數(shù)。

window.onload = function(){}
//或者 
window.addEventListener("load",function(){});

如上例:

<body>
    <script>
        window.onload = function(){
            var btn = document.querySelector('button');
        btn.onclick = function(){
            alert('您剛點(diǎn)擊了一下!')
        }
        }
    </script>
    <button>點(diǎn)擊</button>
</body>

這個(gè)時(shí)候也可以實(shí)現(xiàn)點(diǎn)擊效果。

在這里插入圖片描述

需要注意的是:

1.有了 window.onload 就可以把 JS 代碼寫到頁(yè)面元素的上方,因?yàn)?onload是等頁(yè)面內(nèi)容全部加載完畢,再去執(zhí)行處理函數(shù)。

2.window.onload 傳統(tǒng)注冊(cè)事件方式 只能寫一次,如果有多個(gè),會(huì)以最后一個(gè) window.onload 為準(zhǔn)。

3.如果使用 addEventListener 則沒(méi)有限制。

如果此時(shí)我們還有一個(gè)點(diǎn)擊事件,想要將它的操作放到元素前面呢?

來(lái)操作試試:

 <script>
        window.onload = function(){
            var btn = document.querySelector('button');
        btn.onclick = function(){
            alert('您又點(diǎn)擊了一下!')
        }
    }
        window.onload = function(){
           alert('你好')
        }
    </script>
    <button>點(diǎn)擊</button>
</body>

打印結(jié)果如何呢?

在這里插入圖片描述

可以發(fā)現(xiàn),第一個(gè)事件會(huì)被第二個(gè)事件覆蓋,這是,我們可以另一種方式來(lái)操作,如下:

document.addEventListener('DOMContentLoaded',function(){})

代碼為:

 <script>
        document.addEventListener('DOMContentLoaded',function(){
            var btn = document.querySelector('button');
            btn.onclick = function(){
                alert('您又點(diǎn)擊了一下!')
            }
            alert('你好呀')
        })
    </script>
    <button>點(diǎn)擊</button>
</body>

運(yùn)行結(jié)果為:

在這里插入圖片描述

DOMContentLoaded事件觸發(fā)時(shí),僅當(dāng)DOM加載完成,不包括樣式表,圖片,flash等等。這種方法Ie9以上才支持,如果頁(yè)面的圖片很多的話, 從用戶訪問(wèn)到onload觸發(fā)可能需要較長(zhǎng)的時(shí)間, 交互效果就不能實(shí)現(xiàn),必然影響用戶的體驗(yàn),此時(shí)用 DOMContentLoaded事件比較合適。

2、調(diào)整窗口大小事件

在很多網(wǎng)站上,我們會(huì)發(fā)現(xiàn),當(dāng)我們改變窗口大小時(shí),里面的內(nèi)容也會(huì)隨之改變,這又是怎樣做到的呢?這里就要用到我們的調(diào)整窗口大小事件。

其格式為:

//(1)
window.onresize = function(){}
//(2)
window.addEventListener("resize",function(){});

window.onresize是調(diào)整窗口大小加載事件, 當(dāng)觸發(fā)時(shí)就調(diào)用的處理函數(shù)。

舉個(gè)例子:

頁(yè)面中有一個(gè)盒子,當(dāng)我們的頁(yè)面寬度小于800px時(shí),讓這個(gè)盒子的顏色變成紫色。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
</head>
<body>
    <div></div>
   <script>
       div = document.querySelector('div')
       window.onresize = function(){
           console.log(window.innerWidth);
           if(window.innerWidth <= 800){
               div.style.backgroundColor = 'green';
           }
       }
   </script>
</body>
</html>

打印結(jié)果為:

在這里插入圖片描述

同樣的我們也可以通過(guò)window.addEventListener("resize",function(){})來(lái)進(jìn)行上述操作,這里不在贅述。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • ES6所改良的javascript“缺陷”問(wèn)題

    ES6所改良的javascript“缺陷”問(wèn)題

    這篇文章主要介紹了ES6所改良的javascript“缺陷”問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • 關(guān)于對(duì)TypeScript泛型參數(shù)的默認(rèn)值理解

    關(guān)于對(duì)TypeScript泛型參數(shù)的默認(rèn)值理解

    泛型可以理解為寬泛的類型,通常用于類和函數(shù),下面這篇文章主要給大家介紹了關(guān)于對(duì)TypeScript泛型參數(shù)默認(rèn)值的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 超漂亮的Bootstrap 富文本編輯器summernote

    超漂亮的Bootstrap 富文本編輯器summernote

    Summernote 是一個(gè)簡(jiǎn)單,靈活,所見即所得(WYSIWYG)的編輯器,基于 jQuery 和 Bootstrap 構(gòu)建。對(duì)bootstrap 文本編輯器相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • Avalonjs雙向數(shù)據(jù)綁定與監(jiān)聽的實(shí)例代碼

    Avalonjs雙向數(shù)據(jù)綁定與監(jiān)聽的實(shí)例代碼

    本文通過(guò)實(shí)例代碼給大家介紹了Avalonjs雙向數(shù)據(jù)綁定與監(jiān)聽的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧
    2017-06-06
  • js讀取json文件片段中的數(shù)據(jù)實(shí)例

    js讀取json文件片段中的數(shù)據(jù)實(shí)例

    下面小編就為大家?guī)?lái)一篇js讀取json文件片段中的數(shù)據(jù)實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • js 上下左右鍵控制焦點(diǎn)(示例代碼)

    js 上下左右鍵控制焦點(diǎn)(示例代碼)

    這篇文章主要是對(duì)js上下左右鍵控制焦點(diǎn)的示例代碼進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • 基于three.js編寫的一個(gè)項(xiàng)目類示例代碼

    基于three.js編寫的一個(gè)項(xiàng)目類示例代碼

    這篇文章主要給大家介紹了關(guān)于基于three.js編寫的一個(gè)項(xiàng)目類的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • js實(shí)現(xiàn)帶有介紹的Select列表菜單實(shí)例

    js實(shí)現(xiàn)帶有介紹的Select列表菜單實(shí)例

    這篇文章主要介紹了js實(shí)現(xiàn)帶有介紹的Select列表菜單,涉及javascript頁(yè)面元素的動(dòng)態(tài)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • 原生js實(shí)現(xiàn)隨機(jī)點(diǎn)名功能

    原生js實(shí)現(xiàn)隨機(jī)點(diǎn)名功能

    這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)隨機(jī)點(diǎn)名功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 淺析JavaScrip如何實(shí)現(xiàn)優(yōu)雅地退出函數(shù)

    淺析JavaScrip如何實(shí)現(xiàn)優(yōu)雅地退出函數(shù)

    退出函數(shù)怎么寫?有人會(huì)說(shuō)一個(gè)?return?就退出函數(shù)了,有這么簡(jiǎn)單嗎?這篇文章小編就來(lái)和大家詳細(xì)聊聊如何在JavaScrip中優(yōu)雅地退出函數(shù)吧
    2024-03-03

最新評(píng)論

马鞍山市| 凤城市| 岑巩县| 大厂| 改则县| 奉节县| 东城区| 威海市| 渭源县| 苏尼特左旗| 隆林| 桐乡市| 淄博市| 兴文县| 太谷县| 宁城县| 宣城市| 贵溪市| 保康县| 昭平县| 英德市| 合山市| 新邵县| 阳江市| 济阳县| 兰西县| 望都县| 同德县| 河西区| 喀喇| 台中县| 通州市| 孟连| 周至县| 棋牌| 冀州市| 民乐县| 察隅县| 临朐县| 望江县| 喀什市|