web前端-javascript-DOM和BOM详解

news2024/9/30 5:23:47

文章目录

  • DOM 和 BOM
    • 1. DOM
    • 2. BOM
      • 2.1 BOM 简介
      • 2.2 分类
      • 2.3 语法
        • 1) Navigator 当前浏览器
        • 2)Histry 向前或向后翻页
        • 3)Location 地址栏的信息

DOM 和 BOM

1. DOM

  1. 浏览器已经为我们提供了文档节点的对象,这个对象是 window 对象的属性
  2. 可以在页面中直接使用,文档节点代表的是整个网页
<button id="btn">我是一个按钮</button>
<script type="text/javascript">
  console.log(document);

  //获取到button对象
  var btn = document.getElementById("btn");

  //修改按钮的文字
  btn.innerHTML = "I'am Buttton";
</script>

请添加图片描述
点击后
请添加图片描述
确认后
请添加图片描述

2. BOM

2.1 BOM 简介

  1. 浏览器对象模型
  2. BOM 可以使我们通过 JS 来操作浏览器
  3. 在 BOM 中为我们提供了一组对象,用来完成对浏览器的操作

2.2 分类

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

  1. Window
    • 代表的是整个浏览器的窗口,同时 window 也是网页中的全局对象
  2. Navigator
    • 代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器
  3. Location
    • 代表当前浏览器的地址栏信息,通过 location 可以获取地址栏信息,或者操作浏览器跳转页面
  4. History
    • 代表浏览器的历史记录,可以通过该对象来操作浏览器的历史记录
    • 由于隐私的原因,该对象不同获取到具体的历史记录,只能操作浏览器向前或者向后翻页
    • 而且该操作只在当次访问时有效
  5. Screen
    • 代表用户的屏幕的信息,通过该对象可以获取到用户的显示器的相关信息
console.log(navigator);
console.log(location);
console.log(history);

请添加图片描述

2.3 语法

1) Navigator 当前浏览器

  1. 代表的是当前浏览器的信息,通过该对象可以来识别不同的浏览器
  2. 由于历史原因,Navigator 对象中的大部分属性都已经不能帮助我们识别浏览器了
  3. 一般我们只会使用 userAgent 来判断浏览器的信息
  4. userArgent 是一个字符串,这个字符串中包含有用来描述浏览器信息的内容
    • 不同的浏览器会有不同的 userAgent

火狐的 userAgent
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0

Chromed 的 userAgent
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36

IE8
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; McAfee)

IE9
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; McAfee)

IE10
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; McAfee)

IE11
Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; McAfee; rv:11.0) like Gecko

  • 在 IE11 中已经将微软和 IE 相关的标识都已经去除了,所以我们基本已经不能通过 UserAgent 来识别一个浏览器是否是 IE 了
alert(navigator.appName);

var ua = navigator.userAgent;
console.log(ua);

if (/firefox/i.test(ua)) {
  alert("你是火狐!!!");
} else if (/chrome/i.test(ua)) {
  alert("你是Chrome!!!");
} else if (/msie/i.test(ua)) {
  alert("你是IE浏览器!!!");
} else if ("ActiveXObject" in window) {
  alert("你是IE11,枪毙了你~~");
}

/*
 * 如果通过userAgent不能判断,还可以通过一些浏览器中特有的对象,来判断浏览器的信息
 * 比如:ActiveXobject
 *
 */
/* if("ActiveXObject" in window{
     	alert("你是IE,我已经抓住你了~~~");
    }else{
     	alert("你不是IE");
    } */

/* alert("ActiveXObject" in window); */

请添加图片描述
请添加图片描述

请添加图片描述

2)Histry 向前或向后翻页

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script type="text/javascript">
      /*
       * Histry
       *  - 对象可以用来操作浏览器向前或向后翻页
       */
      window.onload = function () {
        //获取按钮对象
        var btn = document.getElementById("btn");
        btn.onclick = function () {
          //alert(history.length);
          //history.back();
          //history.forward();
          history.go(-2);
        };
      };
    </script>
  </head>
  <body>
    <button id="btn">点我一下</button>
    <h1>History</h1>
    <a href="01BOM.html">去BOM</a>
  </body>
</html>

请添加图片描述
点击后

请添加图片描述

对象可以用来操作浏览器向前或向后翻页

  1. length
    • 属性,可以获取到当前访问的链接数量
alert(history.length);
  1. back()
    • 可以回退到上一个页面,作用和浏览器的回退按钮一样
history.back();
  1. forward()
    • 可以跳转到下一个页面,作用和浏览器的前进按钮一样
history.forward();
  1. go()
    • 可以用跳转到指定的页面
    • 他需要一个整数作为参数
    • 1:表示向前跳转一个页面 相当于 forward()
    • 2:表示向前跳转两个页面
    • -1:表示向后跳转一个页面
    • -2:表示向后跳转两个页面
history.go(-2);

3)Location 地址栏的信息

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script type="text/javascript">
      window.onload = function () {
        //获取按钮对象
        var btn = document.getElementById("btn");
        btn.onclick = function () {
          //alert(location);
          //location = "http://www.baidu.com"
          //location = "01BOM.html";
          //location.assign("http://www.baidu.com");
          //location.reload(true);

          location.replace("01BOM.html");
        };
      };
    </script>
  </head>
  <body>
    <button id="btn">点我一下</button>
    <h1>Location</h1>
    <input type="text" />
    <a href="01BOM.html">去BOM</a>
  </body>
</html>

请添加图片描述
点击按钮后

请添加图片描述

点击超链接后

请添加图片描述

该对象中封装了浏览器的地址栏的信息

  1. 如果直接打印 Location,则可以获取到地址栏的信息(当前页面的完整的路径)
alert(location);
  1. 如果直接将 location 属性修改为一个完整的路径,或相对路径
    • 则我们的页面会自动跳转到该路径,并且会生成相应的历史记录
location = "http://www.baidu.com";
//location = "01BOM.html";
  1. assign()
    • 用来跳转到其他页面,作用和直接修改 location 一样
location.assign("http://www.baidu.com");
  1. reload()
    • 用于重新加载当前页面,作用和刷新按钮一样
    • 如果在方法中传递一个 true,作为参数,则会强制清空缓存刷新页面
location.reload(true);
  1. replace()
    • 可以使用一个新的页面替换当前页面,调用完毕也会跳转页面
    • 不会生成历史记录,不能使用回退按钮回退
location.replace("01BOM.html");

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023北京/深圳NPDP产品经理入门到精通班招生简章

NPDP产品经理国际资格认证是国际公认的唯一的新产品开发专业认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 我们针对互联网时代的个人、互联网企业、与传统企业推出一系列学习。 课程从…

喜上加喜|怿星科技荣获高工智能金球奖两项大奖

12月2日晚&#xff0c;2022第六届高工智能汽车金球奖年度颁奖典礼在上海虹桥正式开幕&#xff0c;来自行业内的100多家头部企业出席了此次盛会。 金球奖是由高工智能汽车组织的聚焦于汽车智能网联产业链的年度颁奖盛典。参选企业覆盖了汽车智能化创新公司、人工智能创新公司、传…

怎样把图片转化成jpeg格式?jpeg格式转换器分享

我们保存照片时发现有时候保存的图片为png格式或webp格式&#xff0c;而上传到其他平台的时候会有jpeg图片格式要求&#xff0c;那么就需要将图片转为jpeg&#xff0c;如何将图片格式转换&#xff08;在线图片格式转换器&#xff08;jpg、png、gif、webp、bmp、tiff&#xff09…

GoF23——工厂模式

✯ 面向对象设计原则 对接口编程而不是对实现编程优先使用对象组合而不是继承介绍说明 工厂模式&#xff08;Factory Pattern&#xff09;属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 在工厂模式中&#xff0c;我们在创建对象时不会对客户端暴露创建逻辑&am…

Java8并行流---并行数据处理与性能

Java8并行流---并行数据处理与性能0.主要内容1.并行流1.1将顺序流转换为并行流附录附录.10.主要内容 主要内容 用并行流并行处理数据 并行流的性能分析 分支/合并框架 使用Spliterator分割流 1.并行流 调用parallelStream方法来把集合转换为并行流。并行流就是一个把内容分成多…

pytorch应用(入门2) 一维线性回归

目录nn.Module&#xff08;模组&#xff09;torch.optim (优化)模型的保存和加载一维线性回归代码如下&#xff1a;均方差损失函数nn.MSELoss()model.parameters()的理解与使用torch.autograd.Variableoptimizer.zero_grad()model.eval的作用深度学习方法——pytorch下GPU与CPU…

如何设计一个好的工业产品?

许多人不知道工业设计的本质是什么?与工业设计相比&#xff0c;其本质是解决消费群体的相关问题&#xff0c;实现消费者的需求&#xff0c;使客户更容易选择。但是如何设计一个好的工业产品呢? 1.更加科学合理地摆脱困境 产品设计必须开拓进取。它应该能够引领时代潮流&#…

基础数学复习(2)——插值

文章目录插值和拟合的区别&#xff08;了解&#xff09;拉格朗日插值&#xff08;必考&#xff09;插值余项说不定会考的证明题拉格朗日插值缺点和适用范围&#xff08;了解&#xff09;牛顿插值&#xff08;必考&#xff09;推导差商的性质&#xff08;会考&#xff09;——通…

Java语法五:锁策略以及CAS

目录 1.常见的锁策略 2&#xff1a;Synchronized原理 2.1&#xff1a;加锁工作工程 2.2:其他的优化操作 2.2.1&#xff1a;锁消除 2.2.2&#xff1a;锁粗化 3.CAS 3.1&#xff1a;实现原子类 3.2&#xff1a;CAS中的ABA问题 3.2.1&#xff1a;什么是ABA问题 3.2.2&am…

【JavaScript】俄罗斯方块简单网页版

文章目录js制作简单网页版俄罗斯方块效果演示设计思路一、HTML网页结构代码二、CSS代码三、JS代码四、代码资源分享js制作简单网页版俄罗斯方块 程序虽然很难写&#xff0c;却很美妙。要想把程序写好&#xff0c;需要写好一定的基础知识&#xff0c;包括编程语言、数据结构与算…

在mac上搭建php的SNMP开发环境

前言 最近需要开发AC的snmp协议&#xff0c;需要开启php的snmp扩展&#xff0c;网上能搜索到的主要还是windows和centos下面的几篇资料。这里主要介绍下mac系统下如何搭建php的snmp开发环境。 第一步&#xff0c;安装php&#xff1a; 首先需要在mac上面安装PHP&#xff0c;这…

重点物联网漏洞利用情况

重点物联网 漏洞利用情况本节我们选取了两个漏洞进行分析。UPnP 相关的漏洞我们将在 4.4.3 进行分析&#xff0c;除去 UPnP 相关漏 洞外&#xff0c;被利用最多的是 Eir D1000 路由器的一个漏洞 [44]&#xff08;CVE-2016-10372&#xff09;&#xff0c;我们将对其进行分析。 …

第006课 - 使用vagrant快速创建linux虚拟机

使用vagrant快速创建linux虚拟机 项目中使用的环境,都是装在linux当中的,我们可以使用linux虚拟机。 https://www.virtualbox.org/ 直接双击进行安装运行。 CPU开启虚拟化 virtualbox安装需要我们的cpu开启虚拟化。 这个需要设置主板。 在开机启动的时候,找到cpu配置:…

什么是金手指,金手指的设计要求有哪些?

金手指&#xff08;connecting finger&#xff09;是电脑硬件如&#xff1a;&#xff08;内存条上与内存插槽之间、显卡与显卡插槽等&#xff09;&#xff0c;所有的信号都是通过金手指进行传送的。金手指由众多金黄色的导电触片组成&#xff0c;因其表面镀金而且导电触片排列如…

阿里云主要产品架构介绍

文章目录前言主要产品云产品访问拓扑ECS架构RDS架构OCS架构SLB架构OSS架构OTS架构ODPS架构SLSSLS的产品视角SLS运维视角OAS结语前言 阿里云产品众多&#xff0c;基本涵盖了从存储到计算到网络的方方面面&#xff0c;当然还包括大数据和人工智能。这些产品&#xff0c;共同组成…

响应式原理 之 vue2 vue3

目录 一、响应式概念 二、响应式函数的实现 watchFn 三、响应式依赖的收集 四、监听对象的变化 1. vue2 2. vue3 五、对象的依赖管理 1. 图解 2. 代码 六、响应式完整代码 一、响应式概念 m有一个初始化的值&#xff0c;有一段代码使用了这个值那么在m有一个新的值时…

热门探讨丨SaaS软件是否正在“毁掉”数字化转型企业?

——当它浮出水面&#xff0c;才能看到水下的错落。 截至2021年末&#xff0c;我国企业的数量达到4842万户&#xff0c;增长1.7倍&#xff0c;其中99%以上都是中小企业。 根据调查&#xff0c;在数字化转型浪潮中&#xff0c;我国有超过70%的企业对数字化转型处于积极态度&am…

网络部署运维实验(pat 端口映射含命令)

♥️作者&#xff1a;小刘在这里 ♥️每天分享云计算网络运维课堂笔记&#xff0c;疫情之下&#xff0c;你我素未谋面&#xff0c;但你一定要平平安安&#xff0c;一 起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的&#xff0c;绽放&#xff0c;…

Vue JSX 上手指南

JSX 简介 JSX Javascript XML。在 Javascript 里写 XML&#xff0c;同时拥有 Javascript 的灵活性和 HTML 的语义化。 Template vs JSX template 是 Vue 的默认写法&#xff0c;也更推荐。因为 template 语法是固定的&#xff0c;Vue 在编译层面为它做了很多静态标记的优化…

MySQL简介及常用引擎介绍

MySQL 由 My 和 SQL 组成&#xff0c;其中的 SQL 部分即为&#xff1a;Structured Query Language&#xff0c;意为结构化查询语⾔&#xff0c;是访问数据库的最常⻅的标准化语⾔。 MySQL 是一款优秀的、开源的数据库管理系统&#xff0c;同时 MySQL 也是一款可移植的数据库&a…