JavaScript学习笔记 07、BOM元素(一)

简介: JavaScript学习笔记 07、BOM元素(一)

一、认识BOM


BOM(Browser Object Model,浏览器对象模型):是js和浏览器窗口交互的接口。


应用场景:一些与浏览器改变尺寸,滚动条相关的特效,都要借助BOM技术。



二、介绍window对象


window对象是当前js脚本运行所处的窗口,而这个窗口中包含DOM结构,window.document属性就是document对象。


标签页与window关系:在有标签页功能的浏览器中,每个标签都拥有自己的window对象,标签与标签之间的window互不干扰!



2.1、全局变量是window的属性(以及一些内置函数)


全局变量会成为window对象的属性,这也就意味着多个应用于同一页面中的js文件是共享全局作用域的,即js文件没有作用域隔离功能!


<script>
    var a = 100;
    //全局变量属于window的变量
    console.log(window.a == a);
    //window内置函数
    console.log(window.alert == alert);
    console.log(window.hasOwnProperty('setInterval'));//测试是否包含属性(或对象)
    //window.alert() 与之前写的 alert()实际上效果一致,这些函数默认都是window对象
    window.alert("123");
</script>




示例


测试一个小案例:看看在一个页面中的多个js文件里作用域同一个window


1.js


var a = 111;


2.js


a++;
console.log(a);


准备两个js文件之后引入到一个HTML中来测试:


<body>
    <script src="./1.js"></script>
    <script src="./2.js"></script>
</body>




2.2、窗口尺寸相关属性


属性

意义

innerHeight

浏览器窗口的内容区域高度,包含水平滚动条(若是有)

innerWidth

浏览器窗口的内容区域宽度,包含垂直滚动条(若是有)

outerHeight

浏览器窗口的外部高度(含浏览器)

outerWidth

浏览器窗口外部宽度


若是想要获得不包含滚动条的窗口宽度,使用:document.documentElement.clientWidth


测试:


<style>
    body {
        /* 让浏览器有宽度 */
        height: 1000px;
    }
</style>
<body>
    <script>
        console.log(window.innerWidth);//浏览器内部宽度+水平滚动条
        console.log(window.outerWidth);//浏览器内部宽度+水平滚动条+浏览器外部线条宽度
        console.log(window.document.documentElement.clientWidth);//浏览器内部宽度
    </script>
</body>
————————————————
版权声明:本文为CSDN博主「长路 ㅤ   」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cl939974883/article/details/124622832




2.3、窗口改变大小事件(onresize)


在窗口大小改变之后,就会触发resize事件。(window.onresize或window.addEventListener('resize'))


示例:



<script>
    //绑定onresize事件
    window.onresize = function () {
        console.log(window.document.documentElement.clientWidth);
    }
</script>


2.4、卷动高度与卷动事件(onscroll)


卷动高度



通常若是页面有一定的高度时,可通过使用window.scrollY或document.documentElement.scrollTop来获取到。



注意:其中window.scrollY是只读的,而document.documentElement.scrollTop是可读可写的表示可以修改!


应用场景:可通过使用该属性来检测浏览器此时处于的位置,或者说来进行定位浏览器的卷动位置,实现自定义!



卷动事件


语法:window.scroll。


示例:


<style>
    body {
        height: 1000px;
    }
</style>
<body>
    <script>
        window.onscroll = function () {
            console.log(window.scrollY);
        };
    </script>
</body>



三、document相关事件


3.1、切换屏幕(onvisibilitychange)


<script>
    //切换屏幕事件
    document.onvisibilitychange = function () {
        alert("不允许切换屏幕,警告一次!");
        document.onvisibilitychange = null;
    };
</script>




四、navigator对象


window.navigator:该对象包含了用户此次活动的浏览器相关属性和标识。


属性

意义

appName

浏览器官方名称

appVersion

浏览器版本

userAgent

浏览器的用户代理(含有内核信息和封装壳信息)

platform

用户操作系统


测试:


<script>
    console.log(window.navigator.appName);
    console.log(window.navigator.appVersion);
    console.log(window.navigator.userAgent);
    console.log(window.navigator.platform);
</script>



五、history对象


window.history:该对象提供了操作浏览器会话历史的接口。常用操作就是模拟浏览器回退按钮。


常用方法:介绍两个模拟浏览器回退方法


history.back()。

history.go(-1)。


测试:


第一个页面:usuallyexer.html


<a href="./u2.html">跳转u2网页</a>


第二个页面:u2.html,提供了两种方式来进行回退


<body>
    <h1>我是u2网页</h1>
    <!-- 方式一:按钮绑定点击事件 -->
    <button>点我回退网页</button>
    <!-- 方式二:通过链接中编写js脚本进行回退 -->
    <a href="javascript:history.go(-1);">点我回退</a>
    <script>
        var m_button = document.getElementsByTagName("button")[0];
        // 绑定单击事件
        m_button.onclick = function () {
            //window.history.back();//等同于history.go(-1);
            window.history.go(-1);
        }
    </script>
</body>




相关文章
|
28天前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
1月前
|
缓存 JavaScript UED
js中BOM中的方法
【10月更文挑战第31天】
|
1月前
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
2月前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
80 4
|
2月前
|
JavaScript
js删除数组中已知下标的元素
js删除数组中已知下标的元素
45 4
|
2月前
|
JavaScript 前端开发 索引
JS 删除数组元素( 5种方法 )
JS 删除数组元素( 5种方法 )
64 1
|
3月前
|
JavaScript 前端开发 API
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
|
2月前
|
JavaScript 前端开发
【干货分享】JavaScript学习笔记分享
【干货分享】JavaScript学习笔记分享
63 0
|
2月前
|
JavaScript 前端开发 Java
【前端基础篇】JavaScript之BOM介绍
【前端基础篇】JavaScript之BOM介绍
44 0
|
3月前
|
JavaScript 前端开发
JavaScript从二维数组抽取元素组成新数组的三种方法
JavaScript从二维数组抽取元素组成新数组的三种方法
下一篇
DataWorks