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

一起來學(xué)習(xí)JavaScript的BOM操作

 更新時(shí)間:2022年03月16日 15:36:30   作者:su_zui  
這篇文章主要為大家詳細(xì)介紹了JavaScript BOM操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

window對象

BOM的核心對象是window,它表示瀏覽器的一個(gè)實(shí)例。在瀏覽器中,window對象有雙重角色,它既是通過JavaScript訪問瀏覽器窗口的一個(gè)接口,又是ECMAScript規(guī)定的Global對象。這意味著在網(wǎng)頁中定義的任何一個(gè)對象、變量和函數(shù),都以window作為其Global對象,因此有權(quán)訪問parseInt()等方法。

全局作用域

由于window對象同時(shí)扮演著ECMAScript中Global對象的角色,因此所有在全局作用域中聲明的變量、函數(shù)都會(huì)變成window對象的屬性和方法。來看下面的例子。

image-20220310215154178

我們在全局作用域中定義了一個(gè)變量name和一個(gè)函數(shù)sayName(),它們被自動(dòng)歸在了window對象名下。于是,可以通過window.name訪問變量name,可以通過window.sayAge()訪問函數(shù)sayName()。由于sayName()存在于全局作用域中,因此this.name被映射到window.name,最終顯示的仍然是正確的結(jié)果。

常見事件

window對象也有一些自己的事件,這里我們用

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <script>
      window.addEventListener('load', function () {
        var btn = document.querySelector('button');
        btn.addEventListener('click', function () {
          alert('點(diǎn)擊我');
        });
      });
      window.addEventListener('load', function () {
        alert(22);
      });
      document.addEventListener('DOMContentLoaded', function () {
        alert(33);
      });
      // load 等頁面內(nèi)容全部加載完畢,包含頁面dom元素 圖片 flash  css 等等
      // DOMContentLoaded 是DOM 加載完畢,不包含圖片 falsh css 等就可以執(zhí)行 加載速度比 load更快一些
    </script>
  </head>
  <body>
    <button>點(diǎn)擊</button>
  </body>
</html>

調(diào)節(jié)窗口大小

比如下面這個(gè)案例,當(dāng)我們把網(wǎng)頁縮放到800的時(shí)候盒子就會(huì)消失不見。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <style>
      div {
        width: 200px;
        height: 200px;
        background-color: pink;
      }
    </style>
  </head>
  <body>
    <script>
      window.addEventListener('load', function () {
        var div = document.querySelector('div');
        window.addEventListener('resize', function () {
          console.log(window.innerWidth);
          console.log('變化了');
          if (window.innerWidth <= 800) {
            div.style.display = 'none';
          } else {
            div.style.display = 'block';
          }
        });
      });
    </script>
    <div></div>
  </body>
</html>

定時(shí)器setTimeout

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 1. setTimeout
      // 語法規(guī)范:  window.setTimeout(調(diào)用函數(shù), 延時(shí)時(shí)間);
      // 1. 這個(gè)window在調(diào)用的時(shí)候可以省略
      // 2. 這個(gè)延時(shí)時(shí)間單位是毫秒 但是可以省略,如果省略默認(rèn)的是0
      // 3. 這個(gè)調(diào)用函數(shù)可以直接寫函數(shù) 還可以寫 函數(shù)名 還有一個(gè)寫法 '函數(shù)名()'
      // 4. 頁面中可能有很多的定時(shí)器,我們經(jīng)常給定時(shí)器加標(biāo)識符 (名字)
      // setTimeout(function() {
      //     console.log('時(shí)間到了');
      // }, 2000);
      function callback() {
        console.log('執(zhí)行力');
      }
      var timer1 = setTimeout(callback, 3000);
      var timer2 = setTimeout(callback, 5000);
      // setTimeout('callback()', 3000); // 我們不提倡這個(gè)寫法
    </script>
  </body>
</html>

this指向問題

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <button>點(diǎn)擊</button>
    <script>
      // this 指向問題 一般情況下this的最終指向的是那個(gè)調(diào)用它的對象
      // 1. 全局作用域或者普通函數(shù)中this指向全局對象window( 注意定時(shí)器里面的this指向window)
      console.log(this);
      function fn() {
        console.log(this);
      }
      window.fn();
      window.setTimeout(function () {
        console.log(this);
      }, 1000);
      // 2. 方法調(diào)用中誰調(diào)用this指向誰
      var o = {
        sayHi: function () {
          console.log(this); // this指向的是 o 這個(gè)對象
        },
      };
      o.sayHi();
      var btn = document.querySelector('button');
      // btn.onclick = function() {
      //     console.log(this); // this指向的是btn這個(gè)按鈕對象
      // }
      btn.addEventListener('click', function () {
        console.log(this); // this指向的是btn這個(gè)按鈕對象
      });
      // 3. 構(gòu)造函數(shù)中this指向構(gòu)造函數(shù)的實(shí)例
      function Fun() {
        console.log(this); // this 指向的是fun 實(shí)例對象
      }
      var fun = new Fun();
    </script>
  </body>
</html>

location對象

轉(zhuǎn)跳頁面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <button>點(diǎn)擊</button>
    <div></div>
    <script>
        var btn = document.querySelector('button');
        var div = document.querySelector('div');
        btn.addEventListener('click', function() {
            // console.log(location.href);
            location.;
        })
        var timer = 5;
        setInterval(function() {
            if (timer == 0) {
                location.;
            } else {
                div.innerHTML = '您將在' + timer + '秒鐘之后跳轉(zhuǎn)到首頁';
                timer--;
            }
        }, 1000);
    </script>
</body>
</html>

location常見方法

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <button>點(diǎn)擊</button>
    <script>
      var btn = document.querySelector('button');
      btn.addEventListener('click', function () {
        // 記錄瀏覽歷史,所以可以實(shí)現(xiàn)后退功能
        // location.assign('http://www.itcast.cn');
        // 不記錄瀏覽歷史,所以不可以實(shí)現(xiàn)后退功能
        // location.replace('http://www.itcast.cn');
        location.reload(true);
      });
    </script>
  </body>
</html>

總結(jié)

瀏覽器對象模型(BOM)以window對象為依托,表示瀏覽器窗口以及頁面可見區(qū)域。同時(shí),window對象還是ECMAScript中的Global對象,因而所有全局變量和函數(shù)都是它的屬性,且所有原生的構(gòu)造函數(shù)及其他函數(shù)也都存在于它的命名空間下。

  • 在使用框架時(shí),每個(gè)框架都有自己的window對象以及所有原生構(gòu)造函數(shù)及其他函數(shù)的副本。每個(gè)框架都保存在frames集合中,可以通過位置或通過名稱來訪問。
  • 有一些窗口指針,可以用來引用其他框架,包括父框架。
  • top對象始終指向最外圍的框架,也就是整個(gè)瀏覽器窗口。
  • parent對象表示包含當(dāng)前框架的框架,而self對象則回指window。
  • 使用location對象可以通過編程方式來訪問瀏覽器的導(dǎo)航系統(tǒng)。設(shè)置相應(yīng)的屬性,可以逐段或整體性地修改瀏覽器的URL。
  • 調(diào)用replace()方法可以導(dǎo)航到一個(gè)新URL,同時(shí)該URL會(huì)替換瀏覽器歷史記錄中當(dāng)前顯示的頁面。架都有自己的window對象以及所有原生構(gòu)造函數(shù)及其他函數(shù)的副本。每個(gè)框架都保存在frames集合中,可以通過位置或通過名稱來訪問。
  • 有一些窗口指針,可以用來引用其他框架,包括父框架。

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

相關(guān)文章

  • 微信小程序自動(dòng)客服功能

    微信小程序自動(dòng)客服功能

    微信小程序最近比較熱,今天小編抽空做了一個(gè)客服機(jī)器人的小程序,下面小編給大家分享微信小程序自動(dòng)客服功能,需要的朋友參考下吧
    2017-11-11
  • JavaScript函數(shù)IIFE使用詳解

    JavaScript函數(shù)IIFE使用詳解

    這篇文章主要介紹了JavaScript函數(shù)IIFE使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • JavaScript設(shè)計(jì)模式之原型模式分析【ES5與ES6】

    JavaScript設(shè)計(jì)模式之原型模式分析【ES5與ES6】

    這篇文章主要介紹了JavaScript設(shè)計(jì)模式之原型模式,簡單描述了原型模式的概念、原理,并結(jié)合實(shí)例形式分析了ES5與ES6實(shí)現(xiàn)原型模式的相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • JavaScript引擎實(shí)現(xiàn)async/await的方法實(shí)例

    JavaScript引擎實(shí)現(xiàn)async/await的方法實(shí)例

    大家應(yīng)該都知道隨著Node 7的發(fā)布,越來越多的人開始研究據(jù)說是異步編程終級解決方案的async/await,下面這篇文章主要給大家介紹了關(guān)于JavaScript引擎是如何實(shí)現(xiàn)async/await的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • webpack4.x下babel的安裝、配置及使用詳解

    webpack4.x下babel的安裝、配置及使用詳解

    這篇文章主要介紹了webpack4.x下babel的安裝、配置及使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • JS中的Replace()傳入函數(shù)時(shí)的用法詳解

    JS中的Replace()傳入函數(shù)時(shí)的用法詳解

    這篇文章主要介紹了JS中的Replace()傳入函數(shù)時(shí)的用法詳解,replace方法的語法是:stringObj.replace(rgExp, replaceText)關(guān)于js replace 傳入函數(shù)的用法,大家通過本文學(xué)習(xí)吧
    2017-09-09
  • js創(chuàng)建數(shù)組的簡單方法

    js創(chuàng)建數(shù)組的簡單方法

    下面小編就為大家?guī)硪黄狫S創(chuàng)建數(shù)組的簡單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • JS模式之簡單的訂閱者和發(fā)布者模式完整實(shí)例

    JS模式之簡單的訂閱者和發(fā)布者模式完整實(shí)例

    這篇文章主要介紹了JS模式之簡單的訂閱者和發(fā)布者模式,以一個(gè)完整實(shí)例形式詳細(xì)分析了JS訂閱者和發(fā)布者模式基本實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • 跟我學(xué)習(xí)javascript創(chuàng)建對象(類)的8種方法

    跟我學(xué)習(xí)javascript創(chuàng)建對象(類)的8種方法

    跟我學(xué)習(xí)javascript創(chuàng)建對象(類)的8種方法,每一種方法都有詳細(xì)的介紹,不知道javascript如何創(chuàng)建對象的朋友,不要錯(cuò)過這篇文章。
    2015-11-11
  • Threejs實(shí)現(xiàn)滴滴官網(wǎng)首頁地球動(dòng)畫功能

    Threejs實(shí)現(xiàn)滴滴官網(wǎng)首頁地球動(dòng)畫功能

    這篇文章主要介紹了Threejs實(shí)現(xiàn)滴滴官網(wǎng)首頁地球動(dòng)畫效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評論

民县| 安远县| 齐河县| 凌海市| 剑川县| 海林市| 呼和浩特市| 盐城市| 白沙| 泗洪县| 黄石市| 深州市| 翼城县| 闻喜县| 滨州市| 芦山县| 红桥区| 康定县| 丰宁| 崇州市| 贵德县| 乾安县| 阿坝县| 肇州县| 秭归县| 克什克腾旗| 沿河| 朝阳县| 绵竹市| 横峰县| 东乡族自治县| 阳新县| 日照市| 游戏| 贺州市| 正蓝旗| 酒泉市| 无锡市| 南宁市| 临江市| 桐柏县|