Web前端 Javascript笔记6

BOM 

前面的笔记讲的都是DOM(文档对象模型),DOM几乎被所有浏览器支持,是DOM的作用为操作HTML文档的重要手段。利用DOM可以对HTML文档中的所有元素,节点进行获取与访问,对标签属性与样式进行设置。 下面是一棵DOM树。

不过,这次要讲的是BOM(浏览器对象模型)

  • 在实际开发中,JavaScript经常需要操作浏览器窗口的控件,实现用户与页面的动态交换。bom可以访问与操作浏览器的控件。
  • BOM 的核心对象是 window,它表示浏览器的一个实例。window对象是JavaScript结构的顶层,对于每个打开的窗口,系统都会自动为其定义 window 对象。也就是每一个窗口就是一个window对象。
  • BOM对象指的就是window对象和它的所属子对象history、location、navigator、screen、document等对象。

1、history对象

BOM提供的history对象(历史记录跳转),可以在用户在浏览器中访问的URL历史记录进行操作。

我们做两个简单的网页

history.forward()=history.go(1):前进

history.back()=history.go(0):后退

<!DOCTYPE html>
<head><meta charset="UTF-8"><title>Document</title><style>h1{display:block;color: blue;font-Weight:600;margin: 0 auto;height: 100px;width: 300px;}</style>
</head>
<body><button>前进</button><button>后退</button><a href="第二个网页.html">点击一下去这个页面</a><h1>第一个网页</h1><script>const b=document.querySelectorAll("button")b[0].onclick=()=>{history.go(1)}b[1].onclick=()=>{history.go(0)}</script>
</body>
</html>
<!DOCTYPE html><meta charset="UTF-8">    <title>Document</title><style>h1{display:block;color: blue;font-Weight:600;margin: 0 auto;height: 100px;width: 300px;}</style>
</head>
<body><button>前进</button><button>后退</button><a href="第一个网页.html">点击一下去这个页面</a><h1>第222222个网页</h1>
</body>
<script>const b=document.querySelectorAll("button")b[0].addEventListener("click",()=>{history.forward()})b[1].addEventListener("click",()=>{history.back()})</script>
</html>

1.1、 pushState()与replace()方法

用来在浏览历史中添加与修改记录

pushState(state,title[,url])

replaceState(state,title[,url])

state表示一个与指定网址相关的状态对象,popstate事件触发时,该对象会传入回调函数,若不需要这个对象,可以填入null或者空字符串;URL表示新的网址,必须与当前页面处在同一个域中。方法执行后,浏览器的地址栏将显示最后添加或者修改的网址。

 <style>h1{display:block;color: blue;font-Weight:600;margin: 0 auto;height: 100px;width: 300px;}</style><body><button>前进</button><button>后退</button><a href="第一个网页.html">点击一下去这个页面</a><h1>第222222个网页</h1>
</body>
<script>const b=document.querySelectorAll("button")b[0].addEventListener("click",()=>{history.forward()history.pushState(null,null,"?a=嘿嘿嘿22222")})b[1].addEventListener("click",()=>{history.back()history.replaceState(null,null,"?a=happpppy哈哈哈")})
</script>


 

2、navigator对象

navigator对象提供提供有关浏览器的信息。

属性说明
appCodeName返回浏览器的代码名
appName返回浏览器的名称
appVersion返回浏览器的平台和版本信息
cookieEnable返回指明浏览器中是否启用 cookie 的布尔值
platForm返回运行浏览器的操作系统平台
userAgent返回由客户机发送服务器的user-agent 头部的值
geolocation返回浏览器的地理位置信息
languge返回浏览器使用的语言
onLine返回浏览器是否在线,在线返回 ture,否则返回 false
product返回浏览器使用的引擎(产品)

随便去找一个浏览器,然后进入控制台

<body><a href="https://www.python.org/">点击一下去这个去python</a>
</body>

方法说明
javaEnabled() 返回布尔值,该值指示浏览器是否启用了 Java。
<!DOCTYPE html>
<html>
<body>
<p ></p>
<script>
let java = navigator.javaEnabled();
document.querySelector("p").innerHTML = "Java 启用:" + java;
</script>
</body>
</html>


 

3、location对象

location可以改变当前用户在浏览器访问的URL

//location.reload()//强制刷新

强制刷新每个1秒执行一次  

 <script>setTimeout(()=>{location.reload()//强制刷新},1000)
</script>

//location.href='https://www.baidu.com'//跳转页面 

<script>setTimeout(()=>{location.href='https://www.baidu.com'//跳转页面},3000) 
</script>

hash返回一个URL的锚部分
host返回一个URL的主机名和端口
hostname返回URL的主机名
href返回完整的URL
pathname返回的URL路径名。
port返回一个URL服务器使用的端口号
protocol返回一个URL协议
search返回一个URL的查询部分
<body><a href="https://blog.csdn.net/cycyzh/article/details/137757006?spm=1001.2014.3001.5502#test"></a><script>let a = document.querySelector('a');console.log(a.href);      console.log(a.protocol);  console.log(a.host);     console.log(a.hostname); console.log(a.port+"(输出为空 - https 默认端口为 443)"); console.log(a.pathname);console.log(a.search);   console.log(a.hash);      console.log(a.origin);    </script>
</body>

 


 

4、screen对象

返回当前客户端屏幕相关的属性信息,比如屏幕的宽度高度

availHeight返回屏幕的高度(不包括Windows任务栏)
availWidth返回屏幕的宽度(不包括Windows任务栏)
colorDepth返回目标设备或缓冲器上的调色板的比特深度
height返回屏幕的总高度
pixelDepth返回屏幕的颜色分辨率(每象素的位数)
width返回屏幕的总宽度
<script>console.log("屏幕的高度(不包括Windows任务栏)="+screen.availHeight)console.log("屏幕的宽度(不包括Windows任务栏)="+screen.availWidth)console.log("屏幕的总高度="+screen.height)console.log("屏幕的总宽度="+screen.width)console.log("屏幕的颜色分辨率="+screen.pixelDepth)console.log("设备或缓冲器上的调色板的bit深度="+screen.colorDepth)</script>

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

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

相关文章

8.Vue2.x 数据监视—watch

文章目录 姓名案例watch实现 姓名案例watch实现 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>姓名案例—watch实现</title><script type"text/javascript" src"../js/vu…

OpenHarmony鸿蒙南向开发案例:【智能窗户通风设备】

样例简介 本文档介绍了安全厨房案例中的相关智能窗户通风设备&#xff0c;本安全厨房案例利用轻量级软总线能力&#xff0c;将两块欧智通V200Z-R/BES2600开发板模拟的智能窗户通风设备和燃气告警设备组合成。当燃气数值告警时&#xff0c;无需其它操作&#xff0c;直接通知软总…

j解决:shiro版本导致静态资源中文名称无法访问

项目场景&#xff1a; 项目使用的springbootshiro&#xff0c;静态资源是直接使用的springboot的ResourceHandlerRegistry来进行配置访问的&#xff0c;没有使用Nginx&#xff0c;Apache等 原因分析&#xff1a; 在做文件预览时发现&#xff0c;中文名称资源无法访问。多次断…

python influx基本操作

连接influx client InfluxDBClient(influx_ip, influx_port, influx_db, , databaseinflux_db)数据样式 [{"time": "2021-12-24T01:18:49Z","abdomina_conn_state": 0,"ap_mac": "05e4608c3200","arrhythmia_type&q…

Targeted influence maximization in competitive social networks

abstract 利用口碑效应的广告对于推销产品是相当有效的。在过去的十年中&#xff0c;人们对营销中的影响力最大化问题进行了深入的研究。影响力最大化问题旨在将社交网络中的一小群人识别为种子&#xff0c;最终他们将引发网络中最大的影响力传播或产品采用。在网络营销的实际场…

C++ 继承(一)

一、继承的概念 继承是面向对象编程中的一个重要概念&#xff0c;它指的是一个类&#xff08;子类&#xff09;可以从另一个类&#xff08;父类&#xff09;继承属性和方法。子类继承父类的属性和方法后&#xff0c;可以直接使用这些属性和方法&#xff0c;同时也可以在子类中…

SpringBoot中全局异常捕获与参数校验的优雅实现

一&#xff0c;为什么要用全局异常处理&#xff1f; 在日常开发中&#xff0c;为了不抛出异常堆栈信息给前端页面&#xff0c;每次编写Controller层代码都要尽可能的catch住所有service层、dao层等异常&#xff0c;代码耦合性较高&#xff0c;且不美观&#xff0c;不利于后期维…

DLT 直接线性变换

DLT 直接线性变换 对于单应变换 x i ′ H x i x_i^{\prime}Hx_i xi′​Hxi​&#xff0c;易知两图中对应的特征点&#xff0c;如何找出所需要的 H H H​&#xff0c;为了解决这个问题&#xff0c;可以采用DLT算法 原理 其中采用Least Squares Error去拟合 其中目标是获得最佳…

【办公类-22-05】20240419 UIBOT填写“PATHS课程”的《SSBS校园行为问卷》

背景需求&#xff1a; 每年都有一个PATHS课程的“家长问卷调查”和“教师问卷调查”需要填写 作为教师&#xff0c;每次要对全班所有的孩子进行评价&#xff0c;每位孩子64题&#xff01; 反复点题目&#xff0c;感觉非常累&#xff0c;工作操作就是两位老师&#xff0c;每人做…

Golang | Leetcode Golang题解之第25题K个一组翻转链表

题目&#xff1a; 题解&#xff1a; func reverseKGroup(head *ListNode, k int) *ListNode {hair : &ListNode{Next: head}pre : hairfor head ! nil {tail : prefor i : 0; i < k; i {tail tail.Nextif tail nil {return hair.Next}}nex : tail.Nexthead, tail my…

U盘秒变0字节?别慌,数据恢复有妙招!

在日常的工作和生活中&#xff0c;U盘已成为我们不可或缺的数据存储工具。然而&#xff0c;有时候我们可能会遇到一个令人头疼的问题&#xff1a;原本存有重要文件的U盘&#xff0c;突然间容量显示为0字节。这意味着U盘中的数据全部丢失&#xff0c;无法读取。那么&#xff0c;…

hackthebox - Redeemer

2024.4.19 TASK 1 Which TCP port is open on the machine? 6379 TASK 2 Which service is running on the port that is open on the machine? redis TASK 3 What type of database is Redis? Choose from the following options: (i) In-memory Database, (ii) Traditiona…

UltraScale+的10G/25G Ethernet Subsystem IP核使用

文章目录 前言一、设计框图1.1、xxv_ethernet_01.2、xxv_ethernet_0_sharedlogic_wrapper1.3、xxv_ethernet_0_clocking_wrapper1.4、xxv_ethernet_0_common_wrapper 二、IP核配置三、仿真四、上板测速 前言 前面我们学习了很多基于XILINX 7系列的高速接口使用&#xff0c;本文…

组合预测 | Matlab实现ICEEMDAN-SMA-SVM基于改进完备集合经验模态分解-黏菌优化算法-支持向量机的时间序列预测

组合预测 | Matlab实现ICEEMDAN-SMA-SVM基于改进完备集合经验模态分解-黏菌优化算法-支持向量机的时间序列预测 目录 组合预测 | Matlab实现ICEEMDAN-SMA-SVM基于改进完备集合经验模态分解-黏菌优化算法-支持向量机的时间序列预测预测效果基本介绍程序设计参考资料预测效果 基本…

爬取微博评论数据

# -*- coding: utf-8 -*- import requests #用于发送请求并且拿到源代码 from bs4 import BeautifulSoup #用于解析数据 1.找到数据源地址并且分析链接 2.发送请求并且拿到数据 3.在拿到的数据中解析出需要的数据 4.存储数据 headers { "User-Agent": "…

Go微服务: go-micro集成链路追踪jaeger

关于链路追踪jeager的原理 参考: https://blog.csdn.net/Tyro_java/article/details/137754812 核心代码演示 1 ) 概述 这里接前文结构框架&#xff1a;https://blog.csdn.net/Tyro_java/article/details/137753232 2 &#xff09;核心代码&#xff1a;common/jaeger.go p…

C++中string的用法总结+底层剖析

前言&#xff1a;在C语言中&#xff0c;我们经常使用字符串进行一系列操作&#xff0c;经常使用的函数如下&#xff1a;增删改查 &#xff08;自己造轮子&#xff09;&#xff0c;C中设计出string容器&#xff0c;STL库中为我们提供了以上函数&#xff0c;所以我们使用string容…

华为OD-C卷-密码解密[100分]Python3+C语言-90%

题目描述 给定一段“密文”字符串 s,其中字符都是经过“密码本”映射的,现需要将“密文”解密并输出。 映射的规则(a ~ i)分别用(1 ~ 9)表示;(j ~ z)分别用("10*" ~ "26*")表示。 约束:映射始终唯一。 输入描述 “密文”字符串 输出描述 …

libftdi1学习笔记 7 - MPSSE I2C

目录 1. 初始化 2. 原理 3. i2cStart 4. i2cStop 5. i2cRecvByte 6. i2cSendByte 7. i2cRead 8. i2cWrite 9. 验证 9.1 初始化i2c 9.2 初始化gpio 9.3 写10个字节到EEPROM 9.4 读回10字节数据 9.5 运行结果 I2C&#xff08;主&#xff09;采用2个或3个GPIO模拟的…

QTableView获取可见的行数

场景 当我们需要实时刷新QTableView时&#xff0c;而此时tableView的数据量较大&#xff0c;如果全部刷新显然不合理&#xff0c;如果可以只对用户看的到的数据进行刷新那就最好了&#xff0c;经过一番摸索找到了几种方式&#xff0c;可供参考 代码 方法1 QVector<int>…