JavaScript-DOM和BOM详解

news2024/9/23 11:13:36

文章目录

  • 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/132324.html

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

相关文章

Netconf协议讲解

目录 什么是Netconf 为什么要提出Netconf 数据的类别 传统网络配置协议 Netconf配置协议 Netconf协议架构 安全传输层 消息层 操作层 内容层 Netconf配置设备流程 通过Python进行Netconf配置 什么是Netconf NETCONF&#xff08;Network Configuration Protocol&…

Unity运行时代码编辑插件介绍-InGame Code Editor-IDE类文本编辑器

因为某些原因,需要在Runtime显示一下代码,也方便做样式设计 所以找到了这个插件 特色什么的都不展开说了,开源的代码都是好代码,样式什么的就不能要求过多 基础使用方法 导入TextMeshPro 基于这个插件的,所以需要先从Package Manager先下载TextMeshPro 创建编辑器 T…

【SpringBoot应用篇】SpringBoot集成j2cache二级缓存框架

【SpringBoot应用篇】SpringBoot集成j2cache二级缓存框架j2cache介绍j2cache入门使用pomapplication.ymlcaffeine.propertiesCacheTestController启动类j2cache介绍 j2cache是OSChina(开源中国)目前正在使用的两级缓存框架。 j2cache的两级缓存结构&#xff1a; L1&#xff…

《悠悠岁月》悠悠岁月,浅藏浅忆,且行且珍惜

《悠悠岁月》悠悠岁月&#xff0c;浅藏浅忆&#xff0c;且行且珍惜 安妮埃尔诺&#xff0c;法国当代著名女作家&#xff0c;2022年获诺贝尔文学奖。埃尔诺从1974年开始创作&#xff0c;至今已出版了约十五部作品。《悠悠岁月》这部历经二十余年思考和推敲的杰作&#xff0c;使她…

Apache Shiro(一)

1.Apache Shiro Apache Shiro Reference Documentation | Apache Shiro Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完 成&#xff1a;认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松 地保护任何应用程序——从最…

PHPExcel基本使用(2) 导入图片

一、效果二、代码一、效果 基于这篇 PHPExcel基本使用&#xff08;2&#xff09; 导入图片 调整 二、代码 基于thinkphp5.1 <?phpnamespace app\index\controller;use think\facade\Env;class Test {public function test(){self::excelAction();}/*** todo 导出报表*…

Microcontent - 微内容

这两年&#xff0c;微内容不断被人提及。微内容是什么&#xff1f;微内容解决什么问题&#xff1f;今天我们一起来看看这个话题。 作者&#xff1a;Sarah Cuellar - 1 - 什么是微内容 什么是微内容&#xff1f;微内容指的是小块的内容&#xff0c;它们遵循具体的的结构规则…

classnames 源码学习笔记与解读

前言 这里我引用源码文档中的一句话来作为开场白&#xff1a; A simple JavaScript utility for conditionally joining classNames together. 话不多说&#xff0c;咱们直接开始 classnames 的源码学习。 核心源码解读 直接来看它的源码部分&#xff0c;以下这是 classnam…

Win10的几个实用技巧系列之win10和win8系统哪个好用、系统任务栏和窗口假死的解决方法

目录 win10系统任务栏和窗口假死怎么办?win10系统任务栏和窗口假死的解决方法 win10系统任务栏和窗口假死怎么解决 Win10进不去Epic下载的死亡搁浅怎么办?Win10玩死亡搁浅闪退的解决方法 Epic领取的死亡搁浅进不去 Win10玩死亡搁浅闪退的解决方法 win10和win8系统哪个好用…

Eth09- EthCtrlConfig:以太网控制器写MAC地址到NVM中的配置

文章目录 1 MAC地址保存到非易失性存储器中传送门 ==>> AutoSAR入门和实战系列总目录 1 MAC地址保存到非易失性存储器中 如果想把MAC地址保存到非易失性存储器中,防止掉电之后MAC地址不存在了,可以通过以下的配置参数,实现实时保存MAC地址到NVM中 EthCtrlConfig/…

【Effective Objective - C】—— 读书笔记(四)

【Effective Objective - C】—— 读书笔记&#xff08;四&#xff09; 协议与分类 文章目录【Effective Objective - C】—— 读书笔记&#xff08;四&#xff09;协议与分类23.通过委托与数据源协议进行对象间通信要点&#xff1a;24.将类的实现代码分散到便于管理的数个分类…

Friedman 检验后的two-tailed Nemenyi test和the two-tailed Bonferroni-Dunn test的关键值

Critical values qαq_{\alpha}qα​ for post-hoc tests after the Friedman testCritical values qαq_{\alpha}qα​ for the two-tailed Nemenyi test Critical values qαq_{\alpha}qα​ for the two-tailed Bonferroni-Dunn test 其中classifiers是比较的方法个数&#…

【nowcoder】笔试强训Day15

目录 一、选择题 二、编程题 2.1 查找输入整数二进制中1的个数 2.2 手套 一、选择题 1.给出数据表 score(stu-id,name,math,english,Chinese), 下列语句正确的是&#xff08; &#xff09; A. Select sum(math),avg(chinese) from score B. Select *,sum(english) from …

初步改造2

1.找到登录按钮的触发方法 views/login/index.vue 找到是handleLogin 接着发现调用的是vuex里面的user/login方法 2.vuex中的方法&#xff0c;其实对应于"store/modules/user.js 中actions的login方法 3.前端请求与发现无响应&#xff0c;我们先用postman排除是后端问题&a…

Java集合 - HashMap

介绍 HashMap Map 是一种存储键值对的集合。Map 集合可以根据 key 快速查找对应的 value 值。HashMap 是 Map 类型的一中。 HashMap 的底层存储结构是&#xff1a;数组 链表 红黑树。 下面我们通过 HashMap 的新增操作、查找操作来看 HashMap 的底层存储结构。 HashMap 的…

深入理解ConcurrentHashMap1.8源码

1. 概述 之前介绍了ConcurrentHashMap1.7&#xff0c;采用的是数组分段锁的方式来实现的。虽然说采用分段锁的方式能够在一定程度上提高并发的效率&#xff0c;但是锁的粒度是Segment级别的&#xff0c;其实还是挺大的。 于是&#xff0c;ConcurrentHashMap1.8继续在1.7版本上…

postgresql_internals-14 学习笔记(五)Buffer Cache

新年的第一篇博客~ 一、 Buffer Cache简介 1. 主要用途 调和内存&#xff08;ns级&#xff09;与磁盘&#xff08;ms级&#xff09;间的速度差异。 pg不仅用自己的buffer cache&#xff0c;也用os cache&#xff0c;所以它使用了“双缓存”&#xff0c;这也是很多文档推荐sha…

《UEFI内核导读》UEFI是不是操作系统?

敬请关注微信公众号&#xff1a;“固件C字营” 最近一直在思考一个问题&#xff0c;UEFI是什么&#xff1f;UEFI算不算是操作系统&#xff1f; 众所周知&#xff0c;计算机系统是由软件和硬件两大部分组成的&#xff0c;但从更科学的角度来划分&#xff0c;我们其实可以分得更…

电子学会2020年9月青少年软件编程(图形化)等级考试试卷(四级)答案解析

目录 一、单选题&#xff08;共15题&#xff0c;每题2分&#xff0c;共30分&#xff09; 二、判断题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 三、编程题【该题由测评师线下评分】&#xff08;共5题&#xff0c;共50分&#xff09; 青少年软件…

【MySQL】说透锁机制(三)行锁升表锁如何避免? 锁表了如何排查?

文章目录前言哪些场景会造成行锁升表锁&#xff1f;如何避免?如何分析排查?查看InnoDB_row_lock%相关变量查看 INFORMATION_SCHEMA系统库总结最后前言 在上文我们曾小小的提到过&#xff0c;在索引失效的情况下&#xff0c;MySQL会把所有聚集索引记录和间隙都锁上&#xff0…