当前位置 > it书童 > js > 正文

js BOM 概况

js it书童 2020-02-22 11:04:26 0赞 0踩 175阅读 0评论

什么是BOM

BOM(Browser Object Model)即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是 window

BOM 由一系列相关的对象构成,并且每个对象都提供了很多方法与属性

BOM 缺乏标准,JavaScript 语法的标准化组织是 ECMA,DOM 的标准化组织是 W3C,BOM 最初是 Netscape 浏览器标准的一部分

BOM 比 DOM 更大,它包含 DOM。

1551319344183

顶级对象window

window 对象是浏览器的顶级对象,具有双重角色

  1. 它是 JS 访问浏览器窗口的一个接口

  2. 它是一个全局对象,定义在全局作用域中的变量、函数都会变成 window 对象的属性、方法。在调用时可省略 window, alert() 就是属于 window 对象方法

window 对象的常见事件

页面(窗口)加载事件(2种)

第1种:

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

window.onload 是窗口 (页面)加载事件,当文档内容完全加载完成会触发该事件(包括图像、脚本文件、CSS 文件等)

有了 window.onload 就可以把 js 代码写到页面元素的上方,因为 onload 是等页面内容全部加载完毕,再去执行处理函数

第2种:

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

DOMContentLoaded 事件触发时,仅当DOM加载完成,不包括样式表,图片,flash等等

如果页面的图片很多的话, 从用户访问到onload触发可能需要较长的时间, 交互效果就不能实现,必然影响用户的体验,此时用 DOMContentLoaded 事件比较合适

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);
})

调整窗口大小事件

window.onresize = function(){}
window.addEventListener("reasize", function(){})

window.onresize 是调整窗口大小加载事件, 当触发时就调用的处理函数。

注意:

  1. 只要窗口大小发生像素变化,就会触发这个事件。

  2. 我们经常利用这个事件完成响应式布局。 window.innerWidth 当前屏幕的宽度

<script>
    // 注册页面加载事件
    window.addEventListener('load', function() {
        var div = document.querySelector('div');
        // 注册调整窗口大小事件
        window.addEventListener('resize', function() {
            // window.innerWidth 获取窗口大小
            console.log('变化了');
            if (window.innerWidth <= 800) {
                div.style.display = 'none';
            } else {
                div.style.display = 'block';
            }
        })
    })
</script>
<div></div>
转载须注明出处:https://www.itshutong.com/articles/463/js-bom-overview
标签: web api
关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
发表评论
我有句话,不知当讲不当讲?
要讲之前请先 登录