javaScriptBOM

1、BOM概述

1.1、BOM简介

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

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

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

1.2、DOM与BOM的区别

类别

DOM

BOM

1

文档对象模型

浏览器对象模型

2

DOM是把文档当做一个对象来看待

把浏览器当做一个对象来看待

3

顶级对象是document

顶级对象是window

4

主要学习操作页面元素

学习浏览器窗口交互的一些对象

5

W3C标准规范

各浏览器厂商在各自浏览器上定义的标准,兼容性较差

1.3、BOM的构成(对象)

BOM比DOM更大,它包含DOM

window

document

location

navigation

screen

history

Window

代表的是整个浏览器的窗口,同时windonw也是网页的全局对象

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

  • 它是js访问浏览器窗口的一个接口
  • 它是一个全局对象。定义在全局作用域中的变量,函数都会变成window对象的属性和方法,在调用的时候,可以省略window,前面学习的对话框都属于window对象方法,如alert(),prompt()等

注意:window下的一个特殊属性window.name,所以定义变量时,尽量不用name这个变量名

Navigator(浏览器的意思)

-代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器

Location

-代表浏览器的地址栏信息,通过location可以获取地址栏信息,或者跳转页面

History

-代表浏览器的历史记录,可以通过该对象操作浏览器的历史记录

由于隐私的原因,该对象不能获取到具体的历史记录,只能操作浏览器向前或者向后翻页

而且该操作只在当次访问有效

Screen

-代表用户的屏幕的信息,通过该对象可以获取到用户的显示器的相关信息

注意:这些BOM对象在浏览器中都是作为window对象的属性来保存的,可以通过window对象来使用,也可以直接使用

2、window对象的常见事件

2.1、onload窗口加载事件

1、window.οnlοad=function(){} 传统注册事件方式(只能写一次,如果有多个,会以最后一个为准)

2、window.addEventListener("load",function(){} )

当文档内容完全加载完成会触发该事件(包括图像,脚本文件、css文件等),就调用的处理函数

2.2、DOMContentLoaded窗口加载事件

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

<body>
    <script>
      //1、 onload写法
      //   window.onload = function () {
      //     var box = document.querySelector(".box");
      //     box.addEventListener("click", function () {
      //       this.style.backgroundColor = "pink";
      //     });
      //   };
      //2、addEventListener 写法
      //   document.addEventListener("load", function () {
      //     var box = document.querySelector(".box");
      //     box.addEventListener("click", function () {
      //       this.style.backgroundColor = "pink";
      //     });
      //   });
      //3、DOMContentLoaded写法
      document.addEventListener("DOMContentLoaded", function () {
        var box = document.querySelector(".box");
        box.addEventListener("click", function () {
          this.style.backgroundColor = "pink";
        });
      });
    </script>
    <!-- 需求:点击box,box背景色变化,js交互可以放在任意位置 -->
    <div class="box">box</div>
  </body>

2.3、调整窗口大小事件

window.οnresize=function(){}

window.addEventListener("resize",function(){} )

调整窗口大小(像素)就会触发,调用内部处理函数,可以用来完成响应式效果

<!--需求:当前屏幕大小在800以内的时候,box消失,否则显示 -->
<div>box</div>
<script>
  var box = document.querySelector("div");
  window.addEventListener("resize", function () {
    if (window.innerWidth < 800) {
      box.style.display = "none";
    } else {
      box.style.display = "block";
    }
  });
</script>

3、定时器

3.1、 setInterval() 定时调用

js的程序的执行速度是非常非常快的,如果希望一段程序,可以每间隔一段时间执行一次,可以使用定时调用

语法:

setInterval(回调函数,间隔时间) 定时调用,可以将一个函数,每隔一段时间执行一次

参数:

第一个:回调函数,该函数会每隔一段时间调用一次

第二个:每次调用间隔时间,单位是毫秒

返回值:

返回一个Number类型的值,这个数字用来作为定时器的唯一标识

关闭定时器:

clearInterval(number)

方法中需要一个定时器的标识作为参数,这样将关闭标识对应的定时器

<body>
    <!-- 需求:页面出现出现数字,每秒自增1 -->
    <h1 id="count"></h1>
    <script>
      var count = document.getElementById("count");
      var num = 1;
      var timer = setInterval(function () {
        count.innerHTML = num++;
        if (num == 5) {
          clearInterval(timer);
        }
      }, 1000);
      console.log(timer);//1
    </script>
  </body>

3.2、 setTimeoutl() 延时调用

概念:延时调用,一个函数不马上执行,而是隔一段时间以后再执行 ,而且只会执行一次

语法:

window.setTimeout(回调函数,延迟秒数)

参数:

1、回调函数直接写函数,或者写函数名皆可

2、延迟秒数若省略,默认是0,单位是毫秒

返回值:数字标识

关闭定时器:clearTimeout(timer)

区别:定时调用会执行多次,而延时调用只会调用一次,延时调用和定时调用可以互相代替,在开发中,可根据自己的需要去选择

<script>
    var num = 0;
    var timer = setTimeout(function () {
      console.log(num++);
    }, 1000);
    //使用clearTimeout()来关闭一个延时调用
    clearTimeout(timer);
  </script>

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/919045.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

利用redis的key失效监听器KeyExpirationEventMessageListener作任务定时提醒功能

某需求&#xff1a; 要求在任务截止日期的前3天时&#xff0c;系统自动给用户发一条消息提醒。 用定时任务的话感觉很不舒服。间隔时间不好弄。不能精准卡到那个点。 由于系统简单&#xff0c;没有使用消息列队&#xff0c;也不能使用延时队列来做。 用Timer的话开销还挺大的&a…

数造科技亮相第26届高交会并接受媒体采访,以数据智能赋能未来

11 月 14 日至 16 日&#xff0c;第二十六届中国国际高新技术成果交易会&#xff08;简称“高交会”&#xff09;在深圳成功举办。本届大会以“科技引领发展&#xff0c;产业融合聚变”为主题&#xff0c;汇聚了全球最新的科技成果&#xff0c;打造了一场科技界的盛大聚会。 在…

Facebook广告投放如何提高过审率?

在Facebook进行广告投放活动时&#xff0c;如何让广告过审应该是让很多人头疼的事情&#xff0c;前期花时间准备文案素材等&#xff0c;结果广告不过审&#xff0c;等于一切的前期准备都打水漂了&#xff0c;特别是黑五类的一些产品。许多独立站会架设斗篷&#xff0c;根据市场…

springBoot插件打包部署

打包插件spring-boot-maven-plugin 不使用插件&#xff0c;运行时&#xff0c;异常信息为“没有主清单属性” 本地部署 杀进程

VSCode+ESP-IDF开发ESP32-S3-DevKitC-1(2)第一个工程 LED心跳灯

VSCodeESP-IDF开发ESP32-S3-DevKitC-1&#xff08;2&#xff09;第一个工程 LED心跳灯 前言1.新建工程2.编写控制LED代码3.LED控制独立成.c和.h文件 前言 实际开发中很多时候我们需要有一个类似心跳灯或运行指示灯的灯以不同的状态闪烁以表示程序的运行状态&#xff0c;所以第…

【金融风控项目-06】:风控建模流程

文章目录 2 风控建模流程2.1 ABC评分卡简介2.2 机器学习模型工作的完整流程2.3 项目准备期2.3.1 明确需求 2.4 模型设计2.4.1 业务抽象成分类/回归问题2.4.2 模型算法2.4.3 模型输入2.4.4 Y标签定义2.4.5 样本选取2.4.6 样本采样2.4.7 观察期和表现期2.4.8 Y标签阈值确定2.4.9 …

Gartner发布中国PAM特权访问管理创新洞察:PAM的8个主要目标和国内9个主要提供商

特权账户是攻击者的主要目标&#xff0c;对每个组织来说都是重大的安全风险。安全和风险管理领导者可以利用这项研究来了解技术前景并降低特权访问风险。 主要发现 合规在推动中国采用特权访问管理 (PAM) 工具方面发挥着重要作用。然而&#xff0c;这些工具的实施经常遭到IT管理…

mayo介绍和QTqmake编译基于Opencascade开发的mayo工程-小白配置

目录: 一、mayo介绍:zap: 最新功能&#xff08;截止7.8.2&#xff09;在这里插入图片描述 二、编译准备三、编译过程3.1QT Creator打开源码的pro工程3.2修改几处pro配置3.3复制所需的动态链接库3.4编译完成 一、mayo介绍 1️⃣mayo是一个基于opencascade开源库开发的一个开源CA…

ISUP协议视频平台EasyCVR私有化部署视频平台如何实现RTMP推流将大疆无人机的视频画面回传?

在现代视频监控和流媒体技术领域&#xff0c;EasyCVR视频融合云平台以其卓越的性能和灵活性&#xff0c;成为了跨区域、网络化视频监控综合管理的理想选择。作为TSINGSEE青犀视频“云边端”架构体系中的核心组件&#xff0c;私有化部署视频平台EasyCVR不仅能够实现视频数据的集…

如何高效实现汤臣倍健营销云数据集成到SQLServer

新版订单同步-&#xff08;Life-Space&#xff09;江油泰熙&#xff1a;汤臣倍健营销云数据集成到SQL Server 在企业信息化建设中&#xff0c;数据的高效集成和管理是提升业务运营效率的关键。本文将分享一个实际案例——如何通过新版订单同步方案&#xff0c;将汤臣倍健营销云…

OpenHarmony-2.DeviceInfo适配

DeviceInfo适配说明 1.启动子系统设备信息说明 2.OHOS 2.1.OHOS 固定值参数适配 OHOS 固定值参数: const.ohos.version.security_patch const.ohos.releasetype const.ohos.apiversion const.ohos.fullname适配说明&#xff1a; OHOS 固定值参数由OHOS系统填充&#xff0…

Java实现两数交换

文章目录 实现两数交换方法一、&#xff08;数组的方式进行交换&#xff09;方法二、&#xff08;对象的方式进行交换&#xff09;总结 实现两数交换 实现两数交换&#xff0c;没有办法通过直接传递数字达到交换的结果&#xff0c;定义的int型变量是被存储在栈空间上的&#xf…

uniapp 购物弹窗组件 (微信小程序)

效果图&#xff0c;暂时只适应单规格&#xff0c;居中弹出和下方弹出&#xff0c;如需求不满足&#xff0c;请自行修改代码 &#xff08;更新于24/11/15) 居中显示效果 下方弹出效果 html <template><view class"" v-if"show":class"mod…

革新车间照明,分布式IO模块引领智能制造新纪元

在智能制造的浪潮中&#xff0c;每一个细节的优化都是推动生产效率与能耗管理迈向新高度的关键。车间照明系统&#xff0c;作为生产环境中不可或缺的一环&#xff0c;其智能化升级正成为众多企业转型升级的重要着力点。 一、从传统到智能&#xff1a;照明系统的变革之旅 传统…

Java基于微信小程序+SSM的校园失物招领小程序

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

微软Office 2021 24年11月授权版

概述 Microsoft Office LTSC 2021 专业增强版是微软公司推出的一款专为企业客户设计的办公软件套件。该版本于2024年11月进行了批量许可版更新推送&#xff0c;旨在为企业用户提供更加稳定、高效的办公体验。 主要特点 LOGO设计趋势强化&#xff1a;新版Office将棱角改为圆角…

uniapp实现中英文切换

home.js const data {ZH: {content1: "苹果",},EN: {content1: “Apple”,} } export default dataindex.js import home from "./home.js" export default {home }en.js import part1 from ./data/part1/index.js const en {language: {name: "…

go-zero(七) RPC服务和ETCD

go-zero 实现 RPC 服务 在实际的开发中&#xff0c;我们是通过RPC来传递数据的&#xff0c;下面我将通过一个简单的示例&#xff0c;说明如何使用go-zero框架和 Protocol Buffers 定义 RPC 服务。 一、生成 RPC项目 在这个教程中&#xff0c;我们根据user.api文件&#xff0…

C#.Net筑基-字符串超全总结

字符串是日常编码中最常用的引用类型了&#xff0c;可能没有之一&#xff0c;加上字符串的不可变性、驻留性&#xff0c;很容易产生性能问题&#xff0c;因此必须全面了解一下。 01、字符与字符编码 1.1、字符Char 字符 char 表示为 Unicode字符&#xff0c;在C#中用 UTF-16 …

ROS Action

在 ROS 中&#xff0c;Action 是一种支持长时间异步任务的通信机制。与 Service 不同&#xff0c;Action 允许客户端发起一个请求&#xff0c;并在任务执行的过程中不断接收反馈&#xff0c;直到任务完成。这种机制非常适用于可能需要较长时间来完成的任务&#xff0c;比如机器…