JavaScript BOMDOM

BOM

window、document、location、navigator 和 screen等,把它们统称为BOM(Browser Object Model,浏览器对象模型) 

window对象

window对象位于BOM的顶层。由浏览器创建,也对应JavaScript本地对象Global ;var声明的全局变量属于window对象的属性 ;全局函数也属于window对象的属性;

打开新窗口

window.open([url] [, name] [, options])  options参数可选 -> height: 窗口的高度,单位为像素; width:窗口的宽度,单位为像素; left:窗口的左边缘位置; top:窗口的上边缘位置; 

系统对话框

window.alert([message])     alert()接受一个参数,即弹出对话框要显示的内容。调用alert()语句后浏览器将创建一个单按钮的消息框。

window.confirm([message])     该方法显示一个确认提示框,其中包括“确定”和“取消”按钮。    用户单击“确定” / “取消”按钮时,window.confirm返回true / false; 

window.prompt([message] [, default])     该方法将显示一个消息提示框,接受两个参数(第1个参数是显示给用户的文本,第二个参数为文本框中的默认值)。点击“确定” / “取消” 返回用户输入的字符串 / null ;

定时操作

①周期性地执行脚本:每隔一段时间执行一次脚本;setInterval:[定时器名=] setInterval (<表达式或函数对象> ,毫秒)  clearInterval:终止/清除定时器 格式: clearInterval(定时器名)

②将某个操作延时一段时间执行; setTimeout:[定时器名=] setTimeout(<表达式或函数对象>,毫秒) clearTimeout:终止/清除定时器 格式: clearTimeout(定时器名)

地址栏控制(location对象)

主要是分析和设置页面的 URL 地址,它是 window 对象和 document 对象的属性,为同一对象; 

herf 属性 

location对象的 href 属性表示当前文档的URL地址:window.location.href = "http://www.baidu.com"   执行后将跳转到百度的主页;

replace()方法 

replace()方法,该方法也能转到指定的页面,但不能返回到原来的页面了:window.location.replace ( “http://www.baidu.com” ) 执行后将跳转到百度的主页,并且不能通过【后退】按钮退回到上一页;

history属性

可以访问历史页面,但不能获取到历史页面的URL;

如果希望浏览器返回前一页: history.go(-1);   或  history.back();     如果希望前进一页: history.go(1);   或  history.forward();       如果希望刷新显示当前页: history.go(0);   或  history.refresh 

navigator对象

navigator对象是用来检测客户端浏览器的类型、版本以及操作系统的类型等信息;

最常用的属性userAgent,可以判读浏览器及操作系统 document.write(navigator.userAgent); 

screen对象 

返回当前渲染窗口中和屏幕有关的属性:主要用来获取用户电脑的屏幕信息,包括屏幕的分辨率,屏幕的颜色位数,窗口可显示的最大尺寸;

DOM

DOM(Document Object Model)文档对象模型用于将每个 HTML 文档描述成文档对象;

节点 

每一个节点表示一个Node对象,可以通过 nodeType 属性来获取节点类型,常见节点类型包括:

Document类型:表示整个HTML页面文档,document对象也是window对象的一个属性,可以作为全局对象来访问; 

Element类型:元素节点,通过访问其id、title等属性,可以获得该节点的相关属性信息; (Element Node ), <html>,<head>、<body>、<p>和<ul>等标签都是元素节点。

Attr类型:属性节点; 属性节点(Attribute Node),属性节点总是被包含在元素节点当中,可以通过元素节点对象调用 getAttribute( ) 方法来获取属性节点。

Text类型:纯文本节点,不包含HTML代码;文本节点(Text Node),文本节点包含在元素节点内,如h1、p等节点就可以包含一些文本节点;

DOM获取元素结点

通过 getElementById ( ) 方法访问节点 var s=document.getElementById(id);

通过 getElementsByName ( ) 方法访问节点 var s=document.getElementsByName(name);

通过 getElementsByTagName ( ) 方法 var s=document.getElementsByTagName(tagname);

通过 querySelector ( ) 方法访问节点   返回与指定选择器或选择器组匹配的第一个 HTMLElement对象。 如果找不到匹配项,则返回null。 var s=document. querySelector(selectors);

通过 querySelectorAll ( )方法 访问节点 返回与指定选择器或选择器组匹配的所有 HTMLElement对象组成的 NodeList 对象。 如果找不到匹配项,则返回空NodeList。 var s=document. querySelectorAll(selectors)

DOM节点操作

创建新元素分为两个步骤:首先通过 createElement() 方法创建元素,然后通过 appendChild() 方法添加新节点。例如,在id为“myForm”的表单中添加一个文本框:

<form id="myForm"></form>
<script>let newNode = document.createElement("input");newNode.type = "text";newNode.name = "username";document.getElementById("myForm").appendChild(newNode);
</script>
节点属性访问

访问 html  | body结点 : html结点:document.documentElement ;body结点:document.body 访问子结结点 :子结点列表:childNodes 第一个子结点:firstChild 最后一个子结点:lastChild; 访问父结点 parentNode 属性,用于访问该结点的父结点 ;访问兄弟结点 ->上一个兄弟结点:previousSibling ;下一个兄弟结点:nextSibling;

InnerText: 元素中的内容,但它将去除HTML标签,可读、可写该属性 ;

innerHTML: 元素中的全部内容,包括HTML标签。   可读、可写该属性 

DOM事件

事件类型

DOM事件流

DOM(文档对象模型)结构是一个 树型结构 ,当一个HTML元素产生一个事件时,该事件会在元素结点根节点之间按特定的顺序传播,路径所经过的节点都会收到该事件,这个传播过程称为DOM事件流;

事件顺序有两种类型:事件捕获和事件冒泡; 事件冒泡和事件捕获都是一种事件传递的机制,可以使事件在不同级的元素间传递。事件冒泡是从事件触发的源节点,向父节点传递,直到到达最顶节点。而事件捕获则是从最顶节点,逐步向下传递,直到到达事件触发的源节点。

DOM标准同时支持 捕获型事件 与 冒泡型事件,但是 捕获型事件 先发生;

事件流会从 document对象 开始,也在 document对象 结束(大部分兼容标准的浏览器会继续将事件捕捉/冒泡延续到 window对象): 首先是捕获式传递事件,接着是冒泡式传递;所以,如果一个处理函数既注册了捕获型事件的监听,又注册冒泡型事件监听,那么在DOM事件模型中它就会被调用两次。 

事件绑定
事件句柄方式 
  •  HTML事件处理

  • DOM 0级事件处理 

需要首先获得要进行事件处理的对象的引用,然后将函数赋值给对应的事件句柄(事件属性):

 

事件句柄优点:简单方便,在HTML中直接书写处理函数的代码块,在JS中给元素对应事件属性赋值即可;

缺点:事件句柄时一次只能有一个事件处理函数,如要为同一事件注册多个事件处理函数,就不能采用这方法 

事件监听器方式 

这种处理方式就不受一个元素同一事件句柄只能绑定一次的限制【DOM 2级事件处理程】 

两者区别:使用事件句柄时一次只能有一个事件处理函数,但对于事件监听器,一次可以添加多个事件处理函数; 

在支持DOM 2级标准的浏览器中,可以使用 addEventListener 方法。该方法既支持注册冒泡型事件处理,又支持捕获型事件处理。 移除已注册的事件监听器调用 element 的 removeEventListener方法即可,参数相同;

addEventListener 方法接受三个参数:

 第①个参数是事件类型名,这里事件类型名称与事件句柄不同,事件类型名称不以 on开头; 第②个参数 eventListener 是回调处理函数(即监听器函数); 第③个参数注明该处理回调函数是在事件传递过程中的捕获阶段被调用还是冒泡阶段被调用 。此参数为 false 时在事件冒泡阶段调用,如果设置为 true,就表示创建一个捕捉事件监听器。 

事件对象 

在DOM中发生事件时,所有相关信息都会被收集并存储在一个名为 event 的对象中。这个对象包含了一些基本信息,比如导致事件的元素、发生的事件类型、与特定事件相关的任何其他数据;

在事件处理函数内部,可能会看到一个固定指定名称的参数,例如event,evt或简单的e。 这被称为事件对象,它被自动传递给事件处理函数,以提供额外的功能和信息。事件对象是传给事件处理程序的唯一参数;

事件对象的属性

currentTarget:当前事件处理程序所在的元素; target:事件目标,返回引发事件的元素的引用; type:被触发的事件类型; 键盘事件的事件对象:keyCode、ctrlKey、key …… 鼠标事件的事件对象:clientX、clientY、offsetX、offsetY ……

阻止事件的默认行为 

(1)调用event对象的 preventDefault() 方法

(2)(事件句柄的)事件处理函数返回false  ;(HTML标记的)事件句柄属性=“return 函数名(参数);"  

浏览器根据返回值的类型决定下一步如何操作。当返回值为 true,进行默认操作; 当返回值为 false,阻止浏览器的下一步操作;

阻止事件传播

通过调用 event 对象的 stopPropagation 方法将阻止事件在DOM结构中传播,取消后续的事件捕获或冒泡。 但是它不能防止任何默认行为的发生;例如,对链接的点击仍会被处理。如果要停止这些行为,使用 preventDefault() 方法,它可以阻止事件触发后默认动作的发生。 它也不能阻止附加到相同元素的相同事件类型的其它事件处理器,如果要阻止这些处理器的运行,请参见 stopImmediatePropagation() 方法;

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

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

相关文章

nginx高可用集群搭建

本文介绍nginx高可用集群的搭建。利用keepalived实时检查nginx进程是否存活、keepalived的虚拟ip技术&#xff0c;达到故障转移的目的。终端用户通过访问虚拟ip&#xff0c;感知不到实际发生的故障。架构图如下&#xff1a; 0、环境 Ubuntu&#xff1a;22.04.2 ltsnginx: 1.…

【开源】创建自动签到系统—QD框架

1. 介绍 QD是一个 基于 HAR 编辑器和 Tornado 服务端的 HTTP 定时任务自动执行 Web 框架。 主要通过抓包获取到HAR来制作任务模板&#xff0c;从而实现异步响应和发起HTTP请求 2. 需要环境 2.1 硬件需求 CPU&#xff1a;至少1核 内存&#xff1a;推荐 ≥ 1G 硬盘&#xff1a;推…

【数据结构Ⅰ复习题】

如有错误欢迎指正&#xff0c;题目根据教材----------严蔚敏数据结构&#xff08;c语言版 第2版&#xff09;人民邮电电子版 数据结构Ⅰ复习题 一、填空题1&#xff0e;算法应该具备的5个重要特性有___有穷性___、确定性、可行性、输入和输出。2&#xff0e;非空单链表L中*p是头…

python爬虫--小白篇【selenium自动爬取文件】

一、问题描述 在学习或工作中需要爬取文件资源时&#xff0c;由于文件数量太多&#xff0c;手动单个下载文件效率低&#xff0c;操作麻烦&#xff0c;采用selenium框架自动爬取文件数据是不二选择。如需要爬取下面网站中包含的全部pdf文件&#xff0c;并将其转为Markdown格式。…

Edge Scdn的应用场景有哪些?

酷盾安全Edge Scdn 具备强大的安全防护能力&#xff0c;通过多层防御机制&#xff0c;如防火墙、DDoS 攻击防护、入侵检测和防御、数据加密等&#xff0c;有效抵御各种网络攻击&#xff0c;包括 DDoS 攻击、CC 攻击、SQL 注入攻击、XSS 跨站脚本攻击等&#xff0c;保障网站和应…

TCPDump参数详解及示例

TCPDump参数详解及示例 TCPDump参数详解TCPDump -G的示例TCPDump -i any -s 2048 -G 600 -p udp -Z root -n -X -tt -w %Y_%m%d_%H%M_%S.pcap &的含义TCPDump是一款强大的网络数据包截获分析工具,可以将网络中传送的数据包的完全截获下来提供分析。它支持针对网络层、协议…

Vue2: table加载树形数据的踩坑记录

table中需要加载树形数据,如图: 官网给了两个例子,且每个例子中的tree-props都是这么写的: :tree-props="{children: children, hasChildren: hasChildren}" 给我一种错觉,以为数据结构中要同时指定children和hasChildren字段,然而,在非懒加载模式下,数据结…

SpringCloudAlibaba实战入门之Sentinel服务降级和服务熔断(十五)

一、Sentinel概述 1、Sentinel是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 一句话概括:sentinel即Hystrix的替代品,官网: https://sentinelguard.io/zh…

问题清除指南|关于num_classes与 BCELoss、BCEWithLogitsLoss 和 CrossEntropyLoss 的关系

前言&#xff1a;关于「 num_classes 1 」引发的探究。 2024年尾声&#xff0c;学弟问到一个问题&#xff1a;在研究工作 CNNDetection 的github开源代码 networks/trainer.py 文件的 line 27 self.model resnet50(num_classes1) 中&#xff0c;变量 num_classes 的值为1&…

grouped.get_group((‘B‘, ‘A‘))选择分组

1. df.groupby([team, df.name.str[0]]) df.groupby([team, df.name.str[0]]) 这一部分代码表示对 DataFrame df 按照 两个条件 进行分组&#xff1a; 按照 team 列&#xff08;即团队&#xff09;。按照 name 列的 首字母&#xff08;df.name.str[0]&#xff09;。 df.name.s…

SQL字符串截取函数——Left()、Right()、Substring()用法详解

SQL字符串截取函数——Left&#xff08;&#xff09;、Right&#xff08;&#xff09;、Substring&#xff08;&#xff09;用法详解 1. LEFT() 函数&#xff1a;从字符串的左侧提取指定长度的子字符串。 LEFT(string, length)string&#xff1a;要操作的字符串。length&#x…

C# 服务调用RFC函数获取物料信息,并输出生成Excel文件

这个例子是C#服务调用RFC函数&#xff0c;获取物料的信息&#xff0c;并生成Excel文件 上接文章&#xff1a;C#服务 文章目录 创建函数创建结构编写源代码创建批处理文件运行结果-成功部署服务器C#代码配置文件注意&#xff01;&#xff01; 创建函数 创建结构 编写源代码 创建…

打开idea开发软件停留在加载弹出框页面进不去

问题 idea软件点击打开&#xff0c;软件卡在加载弹框进不去。 解决方法 先进入“任务管理器”停止IDEA的任务进程 2.找到IDEA软件保存的本地数据文件夹 路径都是在C盘下面&#xff1a;路径&#xff1a;C:\Users\你的用户名\AppData\Local\JetBrains 删除目录下的文件夹&…

sqlserver sql转HTMM邮件发送

通过sql的形式&#xff0c;把表内数据通过邮件的形式发送出去 declare title varchar(100) DECLARE stat_date CHAR(10),create_time datetime SET stat_dateCONVERT(char(10),GETDATE(),120) SET create_timeDATEADD(MINUTE,-20,GETDATE()) DECLARE xml NVARCHAR (max) DECLAR…

Linux:各发行版及其包管理工具

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 Debian 包管理工具&#xff1a;dpkg&#xff08;低级包管理器&#xff09;、apt&#xff08;高级包管理器&#xff0c;建立在dpkg基础上&#xff09;包格式&#xff1a;…

Java项目实战II基于小程序的驾校管理系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着汽车保有量的不断增长&#xff0c;驾驶培训市场日…

小程序租赁系统开发的优势与应用探索

内容概要 在如今这个数码科技飞速发展的时代&#xff0c;小程序租赁系统开发仿佛是一张神奇的魔法卡&#xff0c;能让租赁体验变得顺畅如丝。想象一下&#xff0c;无论你需要租用什么&#xff0c;从单车到房屋&#xff0c;甚至是派对用品&#xff0c;只需动动手指&#xff0c;…

AAAI2025:这也能融合?巧用多坐标系融合策略,PC-BEV实现点云分割170倍加速,精度显著提升!

引言&#xff1a;本文提出了一种基于鸟瞰图&#xff08;BEV&#xff09;空间的激光雷达点云分割方法&#xff0c;该方法通过融合极坐标和笛卡尔分区策略&#xff0c;实现了快速且高效的特征融合。该方法利用固定网格对应关系&#xff0c;避免了传统点云交互中的计算瓶颈&#x…

职场常用Excel基础04-二维表转换

大家好&#xff0c;今天和大家一起分享一下excel的二维表转换相关内容~ 在Excel中&#xff0c;二维表&#xff08;也称为矩阵或表格&#xff09;是一种组织数据的方式&#xff0c;其中数据按照行和列的格式进行排列。然而&#xff0c;在实际的数据分析过程中&#xff0c;我们常…