BOM基础操作

BOM概述

BOM即浏览器对象模型,它是浏览器厂商自己定义的,独立于内容而与浏览器窗口交互
BOM存在很多兼容性问题,我们主要学一些没有兼容性问题的操作
窗口加载事件

当文档内容完全加载完成会触发该事件,这样的话script就没必要写在整个文档的结尾部分,三种方式,推荐使用最后一种方式

<body>
    <script>
        // 传统的注册方式 这个函数只能写一次,如果写了多个只执行最后一个
        window.onload = function(){
            var btn = document.querySelector('button');
            btn.addEventListener('click',function(){
                alert('点击我');
            })
        }
    </script>
    <button>电机</button>
</body>
<body>
    <button>电机</button>
    <script>
    	// 新的注册方式
        window.addEventListener('load',function(){
            var btn = document.querySelector('button');
            btn.addEventListener('click',function(){
                alert('点击我');
            })
        })
    </script>
</body>
<body>
    <button>电机</button>
    <script>
    	// 好的方式,IE9以上支持 当DOM加载完成时,不包括样式表,图片,flash等,就可以触发该事件
        window.addEventListener('DOMContentLoaded',function(){
            var btn = document.querySelector('button');
            btn.addEventListener('click',function(){
                alert('点击我');
            })
        })
    </script>
</body>
调整窗口大小事件
<script>
    window.addEventListener('resize',function(){
    // 只要窗口的像素发生了变化,就会触发这个事件
    console.log('OK')
    // 获得当前窗口的宽度
    console.log(window.innerWidth)
    // 获得当前窗口的高度
    console.log(window.innerHeight)
    })
</script>      
定时器

window.setTimeout(function(),[延迟的毫秒数])

window.setInterval(function(),[延迟的毫秒数])

<script>
    // 延迟事件单位是毫秒,但是可以省略
    // 这个调用函数可以直接写函数
    var time1 = setTimeout(function(){
    	console.log('ok');
    },2000);

    // 也可以写函数名
    // 页面中有很多计时器,我们经常给计时器加标志服
    function callback(){
    	console.log('ok');
    }
    var time2 = setTimeout(callback,4000);
</script>
<script>
    // 每隔多长时间就去调用回调函数
    setInterval(function(){
        console.log('OK')
    },2000)
</script>
五秒后自动关闭的广告案例
<body>
    <div></div>
    <script>
        div = document.querySelector('div');
        setTimeout(function(){
            div.style.display = 'none';
        },5000)
    </script>
</body>
停止定时器

window.clearTimeout(timeoutID)

window.clearInterval(timeoutID)

这个timeoutID最好全部定义为全局变量,进行全局访问

<body>
    <button>停止定时器</button>
    <script>
        var btn = document.querySelector('button');
        var time = setTimeout(function(){
            console.log('ok');
        },5000)
        btn.addEventListener('click',function(){
            clearTimeout(time);
            this.disabled = true;
        })
    </script>
</body>
倒计时案例
<body>
    <div>
        <span class="day">0</span>
        <span class="hour">1</span>
        <span class="minute">2</span>
        <span class="second">3</span>
    </div>
    <script>
        var day = document.querySelector('.day');
        var hour = document.querySelector('.hour');
        var minute = document.querySelector('.minute');
        var second = document.querySelector('.second');
        var inputTime = new Date('2021-11-28 16:40:10')
        // 先调用一次这个函数,不刷新123
        countDown()
        setInterval(countDown,1000);	
        function countDown() {
            var newTime = new Date();
            var times = (inputTime - newTime)/1000;
            console.log(times)
            var d = parseInt(times / 60 / 60 / 24);
            d = d < 10 ? '0' + d : d;
            day.innerHTML = d;
            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;
        }
    </script>
</body>
URL
location对象属性返回值
location.href获取或者设置整个url
location.host返回主机域名
location.port返回端口号,若没写返回空字符
location.pathname返回路径
location.search返回参数
location.hash返回片段 #后面参数常见于链接 锚点
<body>
    <div></div>
    <script>
        console.log(location.search)// ?username=andy
        var params = location.search.substr(1); // username=andy
        var arr = params.split('=');
        var div = document.querySelector('div');
        div.innerHTML = arr[1] + '欢迎你'
    </script>
</body>
location对象方法返回值
location.assign()和href一样可以跳转页面,也可以重定向
location.replace()替换当前页面,因为不记录历史,所以不能后退页面
location.reload()重新加载页面,相当于刷新f5,如果参数为true则为强制刷新
<body>
    <button>点击</button>
    <script>
        var btn = document.querySelector('button')
        btn.addEventListener('click',function(){
            // location.assign('https://www.baidu.com')
            // location.replace('https://www.baidu.com')
            location.reload(true)
        })      
    </script>
</body>
Navigator对象
userAgent

获得浏览器的版本号信息,可以得知在哪个浏览器工作(PC端or手机端)

history对象

back()方法 forword()方法 go() 方法

go(1)前进一步 go(-1)后退一步

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LyaJpunov

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值