JavaScript 常用 Web APIs

DOM 页面文档对象模型

文档:document
元素:element
结点:node

根据 ID 获取:getElementById(id)

  • id 为字符串区分大小写
  • 返回一个 element 对象

根据标签获取:getElementByTagName(tagName)

  • 返回伪数组,元素列表

H5 限定

  • getElementByClassName(className) 类选择
  • querySelector(selectors) 选择器的的第一个
  • querySelectorAll(selectors)

特殊元素获取 body, html

  • document.body
  • document.documentElement

触发–响应机制

  • 事件源:触发点
  • 事件类型:判断触发方式
  • 事件处理程序:响应

鼠标事件

  • onclick 鼠标左击
  • onmouseover 经过
  • onmouseout 离开
  • onfocus 获取焦点触发
  • onblur 失去焦点触发
  • onmousemove 移动
  • onmouseup 弹起
  • onmousedown 按下

addEventListener(type, listener[, useCapture]) 触发多个事件

  • type 事件类型
  • listener 事件处理函数

  • eventTarget.onclick = null; 传统

  • removeEventListener(type, listener[, useCapture])

第三参数,是否处于捕获阶段[true]

元素内容

  • element.innerText 去除 标签,空格,换行
  • element.innerHTML 元素全部内容
  • src、href
  • id、alt、title

表单元素属性

  • type
  • value
  • checked
  • selected
  • disabled

  • element.style 行内样式修改

  • element.className 类名样式修改

JS 修改 style 样式操作,产生的是行内样式, CSS 权重比较高

  • 获取自己添加属性属性值 getAttribute(‘属性’);
  • 更改数值 setAttribute(‘属性’, 值);
  • 移除属性 removeAttribute(‘属性’);

H5 自定义属性

  • nodeType
  • nodeName
  • nodeValue

  • element.parentNode 父节点

  • element.childNodes 子节点
  • element.children 子元素节点
  • element.firstChild 首子节点
  • element.lastChild 尾子节点
  • node.nextSibling 下一个兄弟节点
  • node.previousSibling 上一个兄弟节点

兼容性

  • element.firstElementChild
  • element.lastElementChild
  • node.nextElementSibling 下一个兄弟节点【元素】
  • node.previousElementSibling 上一个兄弟节点【元素】

  • document.createElement(‘tagName’);

  • node.appendChild(child) 添加节点
  • node.insertBefore(child, 指定元素) 在指定元素前插入
  • node.removeChild(child) 删除节点
  • node.cloneNode() 节点克隆,数值false/true 意味着浅/深拷贝
  • document.write() 文档流写入

创建效率
innerHTML 和 createElement 相比

  • 大数据量 使用 innerHTML + 数组

阻止路径跳转方法添加 javascript:void(0); 或者 javascript:;

  • 捕获阶段
  • 当前目标
  • 冒泡阶段

  • e.target 返回 触发事件对象

  • e.srcElement 【非标准】
  • e.type 事件类型
  • e.cancelBubble 阻止冒泡【非标准】
  • e.returnValue 阻止默认事件【非标准】
  • e.preventDefault() 阻止事件
  • e.stopPropagation() 阻止冒泡

使用 e.target 可以完成事件委托

  • contextmenu 控制应该何时显示上下菜单
  • selectstart 鼠标选中

鼠标事件

  • e.clientX 浏览器窗口X
  • e.clientY 浏览器窗口Y
  • e.pageX 文档页面X IE9+
  • e.pageY 文档页面Y IE9+
  • e.screenX 电脑屏幕X
  • e.screenY 电脑屏幕Y

  • keyup

  • keydown
  • keypress 不能识别功能键
  • e.keyCode 返回 ASCII

keyup 与 keydown 不区分大小写

focus() 搜索框获取焦点

BOM 浏览器对象模型

BOM(Browser Object Model) 是指浏览器对象模型

用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构

BOM 提供独立于内容与浏览器窗口进行交互的对象,其核心对象是 window

BOM > DOM : BOM 包含 DOM

flowchart TB main(window) — node_1(document) main(window) — node_2(location) main(window) — node_3(navigation) main(window) — node_4(sreen) main(window) — node_5(history)

window 对象是浏览器的顶级对象

  • 是 JS 访问浏览器窗口的一个接口
  • 是一个全局对象,定义在全局作用域中的变量、函数都是 window 对象的属性和方法

注意:window 下的一个特殊属性 window.name,所以一般变量名避免 name

窗口加载事件: load

事件触发在文档加载完毕时

注意:

  • window.onload 传统注册方法只能写一次,如果有多个以最后一个为准
  • 使用 addEventListener 则没有限制
window.onload = function(){}

// 或者
window.addEventListener('load', function(){})

窗口加载事件【DOM】: DOMContentLoaded

在 DOM 加载完毕触发,不包括样式表、图片、flash … DOMContentLoaded 加载比 load

注意:IE9 以上才支持

窗口尺寸调整事件: resize

当窗口大小发生像素变化时触发

setTimeout 定时器

语法:

window.setTimeout(调用函数, 延时)
  • 延时以毫秒为单位
  • 停止定时器 window.clearTimeout(定时器标识符)

setInterval() 定时器

语法:

window.setInterval(调用函数, 间隔周期)
  • 延时以毫秒为单位
  • 会周期性执行
  • 停止定时器 window.clearInterval(定时器标识符)

同步任务

同步任务都执行在主线程上执行,形成一个 执行栈

异步任务

JS 的异步是通过回调函数实现
一般分为:

  • 普通事件
  • 资源加载
  • 定时器

异步任务相关函数添加到 任务队列

由于主线程不断的重复获取任务、执行任务、再获取任务 …

这种机制被称为 事件循环 (event loop)

window.location 对象用于获得或设置窗体的 URL 并且可以用于解析 URL

location 对象属性

  • href: 获取或设置 整个 URL
  • host: 返回主机名
  • port: 返回端口号
  • pathname: 返回路径
  • search: 返回参数
  • hash: 返回片段

location 对象方法

  • assign(): 重定向
  • replace(): 替换页面,不能回退,不记录历史
  • reload(): 重新加载,等价 F5;如果参数为 true 强制刷新 ctrl + F5

window.navigator 对象包含有浏览器相关的信息

来自 navigator 对象的信息具有误导性,不应该被用于检测浏览器版本,这是因为:

  • navigator 数据可被浏览器使用者更改
  • 一些浏览器对测试站点会识别错误
  • 浏览器无法报告晚于浏览器发布的新操作系统

window.history 对象包含浏览器的历史

history 对象方法

  • back(): 后退
  • forward(): 前进
  • go(n): 前进或后退 n 个页面,通过参数 n 正负区分前进或后退

本地存储

HTML5 规范提出相关解决方案

  • 数据存储在用户浏览器中
  • 设置或读取方便,且页面刷新不会丢失
  • 容量大,sessionStorage: 约 5M, localStorage: 约 20M
  • 只能存储字符串,可以将对象 JSON.stringify() 编码存储

  • 生命周期为关闭窗口

  • 在同一个窗口下数据共享
  • 以键值对存储

存储数据:

sessionStorage.setItem(key, value)

获取数据:

sessionStorage.getItem(key)

删除数据:

sessionStorage.removeItem(key)

清空:

sessionStorage.clear()
  • 生命周期为永久,除非主动删除
  • 在多窗口下数据共享
  • 以键值对存储

存储数据:

localStorage.setItem(key, value)

获取数据:

localStorage.getItem(key)

删除数据:

localStorage.removeItem(key)

清空:

localStorage.clear()

Original: https://www.cnblogs.com/shadow-/p/16556561.html
Author: shadow_D
Title: JavaScript 常用 Web APIs

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/564480/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python将数据写入文本

    Python将数据写入文本,目前遇到的是处理两种数据,一种是对string类型的数据写入,还有一种是对数组类型的数据进行写入 1.对string类型的内容进行写入 创建文件对象我们…

    Python 2023年8月3日
    069
  • pytest(三)配置文件

    一、配置文件 pytest配置文件主要用于定位测试文件及测试类和方法,更便捷的执行测试; 配置文件只允许使用以下三个文件名称: pytest.ini tox.ini setup.c…

    Python 2023年9月13日
    051
  • 性能优化必备——火焰图

    引言 本文主要介绍火焰图及使用技巧,学习如何使用火焰图快速定位软件的性能卡点。结合最佳实践实战案例,帮助读者加深刻的理解火焰图构造及原理,理解 CPU 耗时,定位性能瓶颈。 背景 …

    Python 2023年10月23日
    031
  • selenium爬取图片

    一.https/http开头的图片 1.我们以百度为例,下载百度图片到本地。 2.定位到该元素的img标签 python;gutter:true; from selenium im…

    Python 2023年6月11日
    086
  • 【DS实践 | Coursera】Assignment 3 | Applied Plotting, Charting & Data Representation in Python

    文章目录 一、问题分析 * 1.1 问题描述 1.2 问题分析 二、具体代码及注释 * 2.1 代码及注释 2.2 绘图结果 一、问题分析 1.1 问题描述 In this ass…

    Python 2023年9月6日
    072
  • 为什么浏览器的默认请求模式都是GET?

    因为get方式只是用于查询,不需要和数据库进行交互,同时一个get请求发送后,会在浏览器中留下缓存,下次访问同一url的话,get请求为了节省时间和空间就会直接走缓存,更加方便快捷…

    Python 2023年11月1日
    029
  • Python图像处理【2】探索Python图像处理库

    探索Python图像处理库 * – 0. 前言 – 1. 利用 scikit-image 绘制图像 – 2. 使用 SciPy 模块裁剪/调整图…

    Python 2023年7月31日
    071
  • Scrapy框架(三)基本保存和照片保存

    基本保存 pipelines.py settings.py 照片管道 需求分析 源代码 spider.py items.py pipelines.py settings.py 基本…

    Python 2023年10月6日
    051
  • 梅西进球了,用Python预测世界杯冠军是 … 网友:痛,太痛了

    今天凌晨,夺冠热门阿根廷终于赢球了,梅西也打进了自己本届世界杯的第一粒进球!你熬夜看这场比赛了吗? 小编也用Python预测了一下本届世界杯的冠军归属,结果却不是阿根廷,来一起看看…

    Python 2023年10月27日
    059
  • python基础清单

    前几天在学完《Django企业开发实战》一书后,发现在书的最后一章有一个技术栈清单,上面罗列了完成该书项目所需要的所有技术栈,从基础一直到高阶,通过提问的方式罗列出来,我感觉这种方…

    Python 2023年8月4日
    054
  • 微信中使用ChatGPT

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年11月3日
    053
  • 贪吃蛇Python版 源码+代码分析

    跳转目录 前言 运行示例 程序分析 * 捕获键盘操作 输出游戏画面 代码分析一 * 安装运行环境 游戏地图的实现 炸弹的实现 食物的实现 蛇的实现 初步测试 键盘控制的实现 主程序…

    Python 2023年9月17日
    070
  • python学习笔记-19. pytest测试框架(2)

    python学习笔记-19. pytest测试框架(2) 文章目录 python学习笔记-19. pytest测试框架(2) 前言 一、pycharm中使用pytest * 1. …

    Python 2023年9月13日
    032
  • Numpy

    目录 1、Numpy的核心array array对象的背景: array本身的属性 创建array的方法 2、Numpy的核心array array对象的背景: Numpy的核心数…

    Python 2023年8月26日
    046
  • Python的Django实现Channel的Websocket实时聊天和后台主动推送

    前言 如果只是想在服务器中和前端建立好 websocket通道,然后服务器主动推送数据给前端的需求的话,其实只要 dwebsocket就好了,为什么我要大动干戈去做 channel…

    Python 2023年8月6日
    070
  • 深度学习 带GPU的pytorch 的安装及Conda 的配置

    此篇文章以解决实际问题为主,无多余修饰,直接操作。 前言 本文主要是记录在安装带GPU的pytorch过程中遇到的一些报错,torch.cuda.is_available() 的时…

    Python 2023年9月8日
    045
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球