笔记--BOM浏览器对象模型

BOM浏览器对象模型

1. BOM概述

(1). 什么是BOM?

在这里插入图片描述

(2). BOM的构成

在这里插入图片描述

在这里插入图片描述

2. window 对象的常见事件

(1). 窗口加载事件

在这里插入图片描述
在这里插入图片描述

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

        document.addEventListener('DOMContentloaded', function() {})
        window.addEventListener('load', function() {
            var btn = document.querySelector('button');
            btn.addEventListener('click', function() {
                alert('点击我');
            })
        })
        window.addEventListener('load', function() {
            alert(22);
        })
        document.addEventListener('DOMContentLoaded', function() {
            alert(33);
        })
        // load 等页面内容全部加载完毕,包含页面dom元素,图片,flash,css等等
        // DOMContentLoaded 是DOM加载完毕,不包含图片,flash,css等就可以执行,加载速度比load更快

(2). 调整窗口大小事件

在这里插入图片描述

    window.onresize = function() {}
    window.addEventListener("resize", function() {});
    // window.onresize 是调整窗口大小加载事件,当触发时就调用的处理函数
    // 注意:
    // 1. 只要窗口大小像素发生变化,就会触发这个事件
    // 2. 我们经常利用这个事件完成响应式布局。window.innerWidth当前屏幕的宽度
        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';
                }
            })
        })

3. 定时器

(1). 两种定时器

在这里插入图片描述

(2). setTimeout() 定时器

    window.setTimeout(调用函数, [延迟的毫秒数]);
    setTimeout() 方法用于设置一个定时器,该定时器在定时器到期后执行调用函数
    注意:
        1. window可以省略
        2. 这个调用函数可以直接写函数,或者写函数名或者采取字符串,'函数名()'三种形式。第三种不推荐
        3. 延迟的毫秒数省略默认是0,如果写,必须是毫秒
        4. 因为定时器可能有很多,所以我们经常给定时器赋值一个标识符
        setTimeout(function() {
            console.log('时间到了');
        },2000);
        function callback() {
            console.log('爆炸了');
        }
        var timer1 = setTimeout(callback, 3000);
        var timer2 = setTimeout(callback, 5000);
        // setTimeout('callback()', 3000); // 不提倡这个写法

在这里插入图片描述

实例:5 秒后自动关闭广告

        // <img src="" alt="" class="ad">
        var ad = document.querySelector('.ad');
        setTimeout(function() {
            ad.style.display = 'none';
        }, 5000);

(3). 停止setTimeout() 定时器

    window.clearTimeout(timeoutID)
    clearTimeout() 方法取消了当前通过调用setTimeout() 建立的定时器。
    注意:
        1. window可以省略
        2. 里面的参数就是定时器的标识符。
        var btn = document.querySelector('button');
        var timer = setTimeout(function() {
            console.log('爆炸了');
        }, 5000);
        btn.addEventListener('click', function() {
            clearTimeout(timer);
        })

(4). setnterval() 定时器

    window.setInterval(回调函数, [间隔的毫秒数]);
    setInterval() 方法重复调用一个函数,每隔这个时间,就去调用一次回调函数
    注意:
        1. window可以省略
        2. 这个调用函数可以直接写函数,或者写函数名或者采取字符串 '函数名()' 三种形式
        3. 间隔的毫秒数省略默认是0,如果写,必须毫秒,表示每隔多少毫秒就自动调用这个函数
        4. 因为定时器可能有很多,所以我们经常给定时器赋值一个标识符
        // 1. setInterval
        // 语法规范:window.setInterval(调用函数,延时时间);
        setInterval(function() {
            console.log('继续输出');
        }, 1000);
        // 2. setTimeout 延时时间到了,就去调用这个回调函数,只调用一次,就结束了这个定时器
        // 3. setInterval 每隔这个延时时间,就去调用这个回调函数,会调用很多次,重复调用这个函数
实例:京东秒杀

在这里插入图片描述

        // 1. 获取元素
        var hour = document.querySelector('.hour'); // 小时的黑色盒子
        var minute = document.querySelector('.minute'); // 分钟的黑色盒子
        var second = document.querySelector('.second'); // 秒数的黑色盒子
        var inputTime = +new Date('2019-5-1 18:00:00'); // 返回的是用户输入时间总的毫秒数
        countDown(); // 我们先调用一次这个函数,防止第一次刷新页面有空白
        // 2. 开启定时器
        setInterval(countDown, 1000);

        function countDown() {
            var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
            var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数
            var h = parseInt(times / 60 / 60 % 24); // 时
            h = h < 10 ? '0' + h : h;
            hour .innerHTML = h; // 把剩余的小时给小时黑色盒子
            var m = parseInt(times / 60 % 60); // 分
            m = m < 10 ? '0' + m : m ;
            minute.innerHTML = m;
            var s = parseInt(times % 60); //当前的秒
            s = s < 10 ? '0' + s : s;
            second.innerHTML = s;
        }

(5). 停止setInterval() 定时器

    window.clearInterval(intervalID);
    clearInterval() 方法取消了先前通过调用 setInterval() 建立的定时器
    注意: 
        1. window 可以省略
        2. 里面的参数就是定时器的标识符。
        var begin = document.querySelector('.begin');
        var stop = document.querySelector('.stop');
        var timer = null;
        begin.addEventListener('click', function() {
            timer = setInterval(function() {
                console.log('ni hao ma');
            },1000); 
        });
        stop.addEventListener('click', function() {
            clearInterval(timer);
        })
实例:发送短信

在这里插入图片描述

    // 按钮点击后,会禁用disabled 为true
    // 同时按钮里面的内容会发生变化,注意button里面的内容通过innerHTML修改
    // 里面的秒数是变化的,因此需要用到定时器
    // 定义一个变量,在定时器里面,不断衰减
    // 如果变量为o 说明到了时间,我们需要停止定时器,并且复原按钮初始状态
    // <input type="text">
    // <button>点击</button>
    <script>
        var ipt = document.querySelector('input');
        var btn = document.querySelector('button');
        btn.addEventListener('click', function(){
            var num = 6 ;
            btn.disabled = true;
            btn.innerHTML='还剩'+num+'秒';
            
            var timer = setInterval(function() {
                num--;
                if (num >= 0) {
                    btn.innerHTML='还剩'+num+'秒';
                    btn.disabled = true;
                } else {
                    btn.innerHTML = '点击';
                    btn.disabled = false;
                    clearInterval(timer);
                }
            }, 1000);
        })
    </script>

(6). this

this 的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,一般情况下this的最终指向的是那个调用他的对象
    // this 指向问题,一般情况下this的最终指向的是那个调用它的对象
    // 1. 全局作用域或者普通函数中this指向全局对象window(注意定时器里面的this指向window)
    console.log(this);
    function fn() {
        console.log(this);
    }
    window.fn();
    window.setTimeout(function() {
        console.log(this);
    }, 1000);
    // 2. 方法调用中谁调用this指向谁
    var o = {
        sayHi: function() {
            console.log(this); // this指向的是 o 这个对象
        }
    }
    o.sayHi();
    var btn = document.querySelector('button');
    // btn.onclick = function() {
    //     console.log(this); // this指向的是btn这个按钮对象
    // }
    btn.addEventListener('click', function() {
        console.log(this); // this指向的是btn这个按钮对象
    })
    // 3. 构造函数中this指向构造函数的实例
    function Fun() {
        console.log(this); // this指向的是fun实例对象
    }
    var fun = new Fun();

4. js 执行机制

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. location对象

(1). 什么是location对象

window对象给我们提供了一个location属性用于获取或设置窗体的URL,并且可以用于解析URL。因为这个属性返回的是一个对象,所以我们将这个属性也称为location对象。

(2). URL

在这里插入图片描述

(3). location对象的属性

在这里插入图片描述

在这里插入图片描述

    var btn = document.querySelector('button');
        var div = document.querySelector('div');
        btn.addEventListener('click', function() {
            var timer = 5;
            var timer1 = setInterval(function() {
                if (timer === 0 ) {
                    location.href = 'http://www.baidu.com';
                }
                else {
                    timer--;
                    div.innerHTML = '还剩'+ timer +'秒后自动跳转!!';
                }
            }, 1000);
        });

在这里插入图片描述
在这里插入图片描述

(4). location对象的方法

在这里插入图片描述

    var btn = document.querySelector('button');
    btn.addEventListener('click', function() {
        // 记录浏览历史,所以可以实现后退功能
        // location.assign('http://www.itcast.cn');
        // 不记录浏览历史,所以不可以实现后退功能
        // location.replace('http://www.itcast.cn');
        location.reload(true);
    })

6. navigator对象

在这里插入图片描述

7. history 对象

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值