JavaScript 宿主对象

JavaScript 宿主对象

BOM

  • window

全局对象

  • window对象是可以直接被访问到的
  • 每一个用var声明的变量都会自动作为window对象的属性存在 function声明的函数也会自动作为window对象的方法存在
  • 访问window对象的属性和方法可以不用写window

属性

  • innerWidth 获取浏览器窗口的宽度
  • innerHeight 获取浏览器窗口的高度
  • location history document screen navigator

方法

  • alert();
  • prompt();
  • confirm();
        let r = confirm("sdsf");console.log(r); // 弹窗,确定输出true
  • setInterval(); 接收两个参数 回调函数和时间 每隔1000ms执行一次操作
                let i = 0;let r = setInterval(function () {i++;console.log(i);if(i===5){clearInterval(r);} // i等于5,停止},1000)  // 回调函数  时间console.log(r); // 异步执行let r1 = setInterval(function () {console.log("hello");},1000)  // 回调函数  时间console.log(r1);clearInterval(r1);
  • clearInterval(); 停止运行
  • setTimeout(); 只会执行一次
  • clearTimeout();
  • getComputedStyle();
    let one = document.querySelector(".one");let styleObj = getComputedStyle(one);console.log(styleObj);console.log(styleObj.background);let borderWidth = getComputedStyle(container).borderLeftWidth;let cw = parseInt(getComputedStyle(container).width);let ch = parseInt(getComputedStyle(container).height);
  • onpopstate(); 当浏览器历史记录发生改变后触发
  • onhashchange(); 当浏览器锚链接地址发生改变后触发

history

  • state 当前历史记录中保存的状态信息
  • length 保存的历史记录条数
  • back(); 后退到上一条
  • forward(); 前进到下一条
  • go(0) 刷新 go(1) 前进到下一条 go(-1) 后退到上一条 go(3) 跳转到第三个
  • pushState(); 添加一条历史记录
  • replaceState(); 替换当前界面的历史记录信息

location对象

属性
  • protocol 协议部分 eg: http: https:
  • hostname 域名部分 eg: www.sxuek.com localhost www.news.baidu.com
  • host 域名+端口号
  • port 端口号 eg: :63342 :80
  • pathname 路径部分 eg: /s /aa/bb /index/index.html
  • search 查询部分 eg: ?name=zhangsan&age=19
  • hash 锚链接部分 eg: #top
  • href 完整的url
方法
  • reload(); 刷新 重新加载所有资源
  • assign(); 页面跳转到另外一个地址
  • replace(); 页面跳转到另外一个地址 (不会生成历史记录)

DOM

  • document

整个文档

属性

  • title
  • body

方法

  • querySelector();
    从文档中获取某个标签对象;
    参数:css选择器
  • querySelectorAll();
    从文档中获取某个标签对象集合;
  • getAttribute(); 获取元素身上某个属性的值

以div为代表的普通元素对象

  • className 获取或设置元素的类名;
 let two = document.querySelector(".two");let three = document.querySelector(".three");two.onclick= function () {three.className = "active";}
  • innerHTML 获取或者设置元素的内容;
 let p = document.querySelector("p");p.innerHTML="<b>hello</b>"; console.log(p.innerHTML); 
  • textContent 获取或设置元素的纯文本格式的内容(不能设置标签,设置标签时不识别)
 let divObj = document.querySelector("#demo");divObj.textContent="hello";console.log(divObj.textContent);
  • style 获取到当前的行内样式对象
let divObj = document.querySelector("#demo");divObj.onclick=function(){console.log(divObj.style);console.log(divObj.style.width);divObj.style.width="500px";divObj.style.height="500px";divObj.style.backgroundColor="red";}
  • classList 类名集合对象
    • add 添加一个类名
    • remove 移除一个类名
    • toggle 切换类名 如果有则移除,如果没有则添加
       let divObj = document.querySelector("#demo");console.log(divObj.classList);divObj.classList.add("d");console.log(divObj.classList);divObj.classList.remove("c");divObj.onclick = function () {divObj.classList.toggle("active");}console.log(divObj.classList);
      
    • contains 判断是否包含某个类名
  • offsetWidth 实际占据的宽度
  • offsetHeight 实际占据的高度
  • scrollTop 获取或设置当前元素的内部元素滚动超出容器顶部的值(一定是正值)
  • scrollLeft 获取或设置当前元素的内部元素滚动超出容器左部的值
let out = document.querySelector(".out");out.onclick = function(){console.log(out.scrollTop);//内部元素超出out顶部的值的console.log(out.scrollLeft);}out.scrollLeft=200; // 直接设置超出左边的值
 let one = document.querySelector(".one");console.log(one.offsetWidth); //340
  • offsetLeft 距离有定位属性的前辈元素的左边距,如果前辈元素没有定位,那就是基于文档的位置
  • offsetTop 距离有定位属性的前辈元素的上边距,如果前辈元素没有定位,那就是基于文档的位置
事件
  • onClick 点击事件 方法:可以通过用户鼠标点击div调用
  • onmouseenter 鼠标进入元素后触发
  banner.onmouseenter = function () { //鼠标移入停止播放clearInterval(st);}
  • onmouseleave 鼠标离开元素后触发
 banner.onmouseleave = function () { // 鼠标移除后继续播放if(flag){ // 判断是否点击了轮播点,如果为真之后代码不执行,否则接着自动播放return;}st = setInterval(move,3000); // 继续播放}
  • onscroll 检测元素内部发生滚动的事件(一般给window)
  • onfocus 获得焦点
  • onblur 失去焦点
方法
  • addEventListener(); 具体给某个事件添加事件监听函数
    • transitionend
 banner.addEventListener("click",function () {});
banner.addEventListener("transitionend",function () {});

事件扩展

  • 常用

    • click 鼠标单击
    • mouseenter 鼠标从外部进入
    • mouseleave 鼠标进入外部
    • dblclick 鼠标双击事件
    • mousedown 鼠标按下事件
    • mouseup 鼠标抬起事件
    • mousemove 鼠标移动事件
    • wheel 滚轮事件
      • mousewheel IE/Google
      • DOMMouseScroll Firefox
    • contextmenu 右击事件
    • mouseover 鼠标从外部进入
    • mouseout 鼠标进入外部
    • scroll 滚动事件
    • resize 尺寸发生改变
    • load 加载完成 img/window页面加载完成

    键盘触发事件

    • keydown 某个键按下 按压不动 (window document body 可输入内容的标签)
    • keyup 某个键抬起
    • keypress 某个键按压不动
    • focus 获取焦点
    • blur 失去焦点
    • change 内容改变并且失去焦点
    • submit 表单提交事件
    • reset 表单重置事件
    • transitionend 过渡结束
  • 事件添加

    • obj.on+事件名=function(){}
      • DOM为我们提供的快速的给对象添加事件的借口(1.并不是每一个事件都有 2.每个接口只能添加一个函数-事件处理程序)
    • obj.addEventListener(“事件名”,function(){})
      • 元素时间用来添加事件的方法(1.可以添加任意事件 2.对于同一个事件可以添加同一个处理程序)
  • 事件移除

    • div.onclick = function(){} --> div.onclick = null;
    • div.addEventListener(“事件名”,函数名) --> removeEventListener(“事件名”,函数名);
  • 事件对象

用来保存事件发生的时候才会产生的一些信息

获取对象
  1. div.onclick = function (val) {console.log(val);}
  2. div.addEventListener(“click”,function (e) { console.log(e);});
事件对象的属性
  • 鼠标事件

    • screenX screenY 触发事件时鼠标距离屏幕的位置
    • clientX clientY 触发事件是鼠标距离浏览器窗口的位置
    • pageX pageY 触发事件时鼠标距离文档的位置
    • offsetX offsetY 触发事件时鼠标距离事件源的位置
    • which 用来判断当前按下的是左键还是右键
  • 通用

    • type 当前事件的名称
    • target 目标事件源(事件冒泡开始的元素)
  • 滚轮事件

    • deltaY 滚轮滚动方向
  • 键盘事件

    • keycode 获取所按键的键盘码
    • ctrlKey 判断当前ctrl键是否按下
    • shiftKey 判断当前shift键是否按下
    • altKey 判断当前alt键是否按下
事件对象的方法
  • preventDefault(); 阻止浏览器的默认行为
  • stopPropagation(); 阻止事件流的传播

事件流

  • 事件流

当我们触发某个对象身上的事件的时候,他的父元素、以及父元素的父元素…直到整个页面都会按照特定的顺序响应这个事件

  • 冒泡型事件流
  • 从最明确的事件源到最不明确的事件源依次触发
  • 捕获型事件流
  • 从最不明确的事件源到最明确的事件源依次触发
  • addEventListener(事件,处理程序.true);
  • 捕获型事件流触发完成后会继续冒泡事件流
  • 事件流的利用和阻止
    • 利用
    • 阻止 e.stopPropagation();
    • 事件委托,阻止事件流的方法

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

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

相关文章

AWS基于x86 vs Graviton(ARM)的RDS MySQL性能对比

概述 这是一个系列。在前面&#xff0c;我们测试了阿里云经济版&#xff08;“ARM”&#xff09;与标准版的性能/价格对比&#xff1b;华为云x86规格与ARM&#xff08;鲲鹏增强&#xff09;版的性能/价格对比。现在&#xff0c;再来看看AWS的ARM版本的RDS情况 在2018年&#…

User: zhangflink is not allowed to impersonate zhangflink

使用hive2连接进行添加数据是报错&#xff1a; [08S01][1] Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. User: zhangflink is not allowed to impersonate zhangflink 有些文章说需要修…

配置OSS后如何将服务器已有文件上传至OSS,推荐使用ossutil使用

1.下载安装ossutil sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash2.交互式配置生成配置文件 ossutil config 根据提示分别设置配置文件路径、设置工具的语言、Endpoint、AccessKey ID、AccessKey Secret和STSToken参数&#xff0c;STSToken留…

自定义BeanPostProcessor之Feign组件服务间优雅调用

Feign是什么 feign是声明式的web service客户端&#xff0c;它让微服务之间的调用变得更简单了&#xff0c;类似controller调用service。Spring Cloud集成了Ribbon和Eureka&#xff0c;可在使用Feign时提供负载均衡的http客户端。 Feign怎么使用 FeignClient(value "s…

【Axure高保真原型】个性化自定义图片显示列表

今天和大家分享个性化自定义图片显示列表的原型模板&#xff0c;鼠标点击多选按钮&#xff0c;可以切换按钮选中或者取消选中&#xff0c;按钮选中时&#xff0c;对应图片会在列表中显示&#xff0c;按钮取消后&#xff0c;对应图片会自动隐藏。那这个模板是用中继器制作的&…

系统设计-缓存介绍

该图说明了我们在典型架构中缓存数据的位置。 沿着流程有多个层次。 客户端应用程序&#xff1a;HTTP 响应可以由浏览器缓存。我们第一次通过 HTTP 请求数据&#xff0c;返回时在 HTTP 标头中包含过期策略&#xff1b;我们再次请求数据&#xff0c;客户端应用程序首先尝试从浏…

前端实现检索文本高亮实现

文章目录 一、前言二、实现三、最后 一、前言 使用搜索引擎时的搜索结果高亮&#xff0c;搜索文本在查询出来的结果内高亮显示&#xff0c;这种在全文检索应该很常见 二、实现 看了下百度检索的实现&#xff0c;是给内容加上了em标签&#xff0c;然后给em标签设置颜色&#x…

机器的深度强化学习算法可以被诱导

设计一个好的奖励函数是机器深度强化学习算法的关键之一。奖励函数用于给予智能体&#xff08;机器&#xff09;在环境中采取不同行动时的反馈信号&#xff0c;以指导其学习过程。一个好的奖励函数应该能够引导智能体朝着期望的行为方向学习&#xff0c;并尽量避免潜在的问题&a…

Gitlab 安装手册

MD[Gitlab 安装手册] Gitlab 安装手册 说明: Gitlab最低配置1核2g,建议配置2核4g以上且单独部署,如有多项目CI/CD要求,可以4核8g 1. 安装相关依赖(安装policycoreutils) [rootsjclinux ~]# yum -y install policycoreutils openssh-server openssh-clients postfix 2. 启动s…

区块链密码学:基础知识、应用与未来发展

一、引言 区块链技术&#xff0c;作为一种分布式、去中心化的数据管理方式&#xff0c;密码学在其安全性和可靠性方面发挥着至关重要的作用。本文将详细介绍区块链密码学的基础知识、应用以及未来发展趋势。 二、区块链密码学基础知识 区块链密码学是区块链技术的核心组成部分…

从产业升级看网站安全:解决网站被攻击的创新之道

随着数字化浪潮的不断涌动&#xff0c;网站被攻击的问题成为互联网时代亟需解决的难题。从产业升级的角度来看&#xff0c;我们可以通过创新手段来强化网站安全&#xff0c;确保网络生态的健康运行。 互联网产业的蓬勃发展与安全隐患 互联网产业在快速蓬勃的发展中&#xff0c;…

vue 学习 -- day39(reactive 对比 ref)

从定义数据角度对比&#xff1a; ref用来定义&#xff1a;基本类型数据。reactive用来定义&#xff1a;对象&#xff08;或数组&#xff09;类型数据。备注&#xff1a;ref也可以用来定义对象&#xff08;或数组&#xff09;类型数据, 它内部会自动通过reactive转为代理对象。从…

【海思SS528 | VO】MPP媒体处理软件V5.0 | VO模块编程总结

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

mysql5.7安装详细教程

文章目录 1 引言1.1 现有的数据存储方式有哪些&#xff1f;1.2 以上存储方式存在哪些缺点&#xff1f; 2 数据库2.1 概念2.2 数据库的分类 3 数据库管理系统3.1 概念3.2 常见数据库管理系统 4 MySQL4.1 简介4.2 访问与下载4.3 安装4.3.1 解压缩到非中文目录4.3.2 编写配置文件4…

一张图理解接口测试框架

测试框架先向测试数据库中插入测试数据&#xff08;如&#xff1a;name”Tom“&#xff09; 调用被测系统提供的接口&#xff08;传参&#xff1a;name”Tom“&#xff09; 从测试数据库中查到符合参数的数据 将查询到的数据组成Json格式&#xff0c;并返回给测试框架 提供…

【MySQL】:数据库基本认识

数据库基础 一.什么是数据库1.mysql是什么2.为什么要有数据库3.服务器&#xff0c;数据库&#xff0c;表关系4.Mysql架构5.SQL语句分类 二.存储引擎 一.什么是数据库 1.mysql是什么 1.mysql是数据库服务的客户端。 2.mysqld是数据库服务的服务器端。 3.mysql本质&#xff1a;基…

docker安装及配置mysql

docker 安装mysql 下载镜像文件 下载mysql5.7版本 sudo docker pull mysql:5.7检查是否下载成功 sudo docker images2.创建实例并启动 切换到root下避免每次使用sudo 密码&#xff1a;vagrant docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/my…

elasticsearch 索引数据多了怎么办,如何调优,部署?

当Elasticsearch索引的数据量不断增加时&#xff0c;可以考虑以下调优和部署措施&#xff1a; 增加索引规模&#xff1a;Elasticsearch支持动态增加索引&#xff0c;可以根据数据量的增长情况逐步增加新的索引。同时&#xff0c;也可以考虑使用分片技术&#xff0c;将数据分散…

Metasploit在蓝队防御中的应用

预计更新 第一章 Metasploit的使用和配置 1.1 安装和配置Metasploit 1.2 Metasploit的基础命令和选项 1.3 高级选项和配置 第二章 渗透测试的漏洞利用和攻击方法 1.1 渗透测试中常见的漏洞类型和利用方法 1.2 Metasploit的漏洞利用模块和选项 1.3 模块编写和自定义 第三章 Me…

解决Error:You‘re using an RSA key with SHA-1, which is no longer allowed

一、问题 在微信开发者工具中&#xff0c;推送代码时发生错误Error:You‘re using an RSA key with SHA-1, which is no longer allowed...... 奇怪的是命令行可以正常push: 原因&#xff1a;因为生成密钥的RSA算法&#xff0c;由于安全性原因&#xff0c;现在已经不允许使用…