当前位置: 首页 > news >正文

MDN-Web APIs

参考资料

文章目录

    • 简介
    • DOM API
    • XMLHttpRequest
    • Web Storage API
    • Websockets API

简介

Web APIs(Application Programming Interfaces)是用于与浏览器环境中的 Web 功能进行交互的一组接口和方法集合。通过 Web APIs,开发人员可以访问浏览器提供的功能,如操作 DOM、发送网络请求、处理用户输入等。这些 APIs 是用来构建交互性、动态性和丰富性的 Web 应用程序的重要工具。

以下是一些常见的 Web APIs:

  • DOM API:Document Object Model(DOM) API 允许开发人员操作 HTML 和 XML
    文档的结构和内容。通过 DOM,可以增删修改文档中的元素、属性和文本内容。
  • Fetch API:用于发送和接收网络请求的 Fetch API。它提供了一种现代化的方式来执行网络请求,取代了传统的XMLHttpRequest。
  • XMLHttpRequest:虽然被 Fetch API 取代,但仍然可以用来发送异步网络请求。
  • Web Storage API:用于在客户端浏览器中存储数据,包括 localStorage(持久性存储)和
    sessionStorage(会话级存储)。
  • IndexedDB API:提供了一个客户端数据库,用于在浏览器中存储大量结构化数据。
  • Geolocation API:用于获取用户设备的地理位置信息。
  • Canvas API:允许通过 JavaScript 绘制图形和图像,创建各种图形效果和动画。
  • Web Audio API:用于操作和控制音频,实现音频处理、合成和分析等功能。
  • Web Speech API:提供了语音识别和合成功能,使得浏览器可以进行语音交互。
  • Web Notifications API:用于在用户的操作系统中显示通知,用于向用户显示信息和提醒。
  • Web Workers API:允许在后台线程中执行 JavaScript 代码,提高了多线程处理的能力,从而不影响主 UI
    线程的响应性。
  • Websockets API:提供了在浏览器和服务器之间建立双向通信的方式,用于实时数据传输。

这些只是众多 Web APIs 中的一部分。使用这些 APIs,开发人员可以创建出各种各样功能丰富的 Web 应用程序,提供更好的用户体验和交互性。不同的 Web APIs 针对不同的场景和需求,开发人员可以根据自己的项目选择适合的 API 进行开发。

DOM API

DOM API(Document Object Model API)是用于操作网页文档结构和内容的一组接口和方法。通过 DOM API,开发人员可以使用 JavaScript 动态地修改、添加、删除网页元素和内容,实现交互性和动态性的网页效果。

DOM 将整个网页文档表示为一个树状结构,每个节点代表文档中的一个元素、属性、文本等。DOM API 允许开发人员访问和操作这些节点,从而实现各种操作。

以下是一些常见的 DOM API 操作示例:

  1. 选择元素
const element = document.getElementById("myElement"); // 通过 ID 获取元素
const elements = document.querySelectorAll(".myClass"); // 通过类名获取元素集合
const element = document.querySelector("p"); // 通过标签名获取第一个元素
  1. 修改内容和属性
element.textContent = "New text content"; // 修改文本内容
element.innerHTML = "<strong>Strong text</strong>"; // 修改 HTML 内容
element.setAttribute("data-id", 123); // 设置属性
  1. 创建和插入元素
const newElement = document.createElement("div"); // 创建新元素
element.appendChild(newElement); // 将新元素插入到父元素末尾
element.insertBefore(newElement, referenceElement); // 在指定元素之前插入新元素
  1. 删除元素
element.parentNode.removeChild(element); // 从父元素中移除
  1. 事件处理
element.addEventListener("click", function() {// 处理点击事件
});
  1. 样式操作
element.style.color = "red"; // 修改元素样式
element.classList.add("highlight"); // 添加 CSS 类名

XMLHttpRequest

XMLHttpRequest(XHR)是一种用于发送 HTTP 请求和接收服务器响应的 Web API。它是早期 Web 开发中主要用于进行异步通信的工具,虽然现在已被 Fetch API 替代,但了解它仍然是有益的。

使用 XMLHttpRequest,您可以在不刷新页面的情况下从服务器获取数据并更新网页内容。以下是一个简单的使用 XMLHttpRequest 发送 GET 请求的示例:

var xhr = new XMLHttpRequest();
xhr.open("GET", "https://api.example.com/data", true); // 创建一个 GET 请求
xhr.onreadystatechange = function() {if (xhr.readyState === XMLHttpRequest.DONE) { // 请求完成if (xhr.status === 200) { // 响应成功var responseData = JSON.parse(xhr.responseText);console.log(responseData);} else {console.error("Request failed with status:", xhr.status);}}
};
xhr.send(); // 发送请求

在上面的示例中,我们创建了一个 XMLHttpRequest 实例,指定了请求方法和 URL,然后设置了 onreadystatechange 事件处理程序来监听请求状态的变化。一旦请求状态变为 DONE,我们检查响应状态码以确定请求是否成功,并处理响应数据。

XMLHttpRequest 可以用于发送各种类型的 HTTP 请求,包括 GET、POST、PUT、DELETE 等,并且可以设置请求头、处理响应数据等。然而,与 Fetch API 相比,XMLHttpRequest 在使用上更繁琐,需要手动处理状态和错误,而 Fetch API 基于 Promise 更加简洁和易于使用。如果您在现代 Web 开发中进行网络通信,建议使用 Fetch API。

Web Storage API

Web Storage API 是一组用于在客户端浏览器中存储数据的 Web API,它提供了一种在浏览器中持久性地存储键值对数据的方式,以便在不同页面和会话之间共享数据

Web Storage API 分为两种存储方式:

  • localStorage:提供了持久性的本地存储,数据会一直保存在客户端,即使浏览器关闭也不会丢失。适用于需要在多个页面之间共享数据的场景。
  • sessionStorage:提供了会话级别的本地存储,数据仅在当前会话中有效,当浏览器窗口关闭时数据将被清除。适用于在同一页面的不同部分之间共享数据。

以下是 Web Storage API 的基本用法:

// 使用localStorage存储数据
localStorage.setItem("username", "john");
const storedUsername = localStorage.getItem("username");
console.log(storedUsername); // 输出:john// 使用sessionStorage存储数据
sessionStorage.setItem("token", "abc123");
const storedToken = sessionStorage.getItem("token");
console.log(storedToken); // 输出:abc123// 移除数据
localStorage.removeItem("username");
sessionStorage.clear(); // 清空所有sessionStorage数据

需要注意的是,Web Storage API 存储的数据是以字符串形式存储的,如果需要存储对象或其他数据类型,需要进行适当的序列化和反序列化操作。

虽然 Web Storage API 提供了方便的方式来存储数据,但也要注意存储容量限制(通常为几MB)以及可能的安全性问题。敏感信息不应存储在本地存储中,以免被恶意访问。

在现代 Web 开发中,随着更多高级的数据管理工具的出现,如== IndexedDB 和客户端数据库==,您可能会根据具体需求选择更适合的数据存储方式。

Websockets API

WebSocket API 是一种在 Web 应用程序中实现双向通信的技术,允许浏览器和服务器之间建立持久的、全双工的通信连接。与传统的 HTTP 请求-响应模型不同,WebSocket 允许实时交换数据,适用于实时聊天、实时数据更新和多人协作等应用场景。

WebSocket API 提供了一种在浏览器和服务器之间传递数据的方法,数据可以是文本或二进制格式。与 HTTP 请求不同,WebSocket 连接在初始握手后保持打开状态,使得服务器和客户端可以随时向对方发送数据。

以下是一个简单的使用 WebSocket API 的示例:

// 创建 WebSocket 连接
const socket = new WebSocket("wss://example.com/socket");// 连接成功时触发
socket.onopen = function(event) {console.log("WebSocket connection opened.");socket.send("Hello, server!");
};// 接收到消息时触发
socket.onmessage = function(event) {console.log("Received message from server:", event.data);
};// 连接关闭时触发
socket.onclose = function(event) {if (event.wasClean) {console.log("WebSocket connection closed cleanly.");} else {console.error("WebSocket connection closed with error:", event.code, event.reason);}
};// 发生错误时触发
socket.onerror = function(event) {console.error("WebSocket error:", event);
};

在上面的示例中,我们首先创建了一个 WebSocket 连接,然后监听不同的事件来处理连接的状态和数据交换。当连接建立后,我们通过 send 方法向服务器发送数据,通过 onmessage 处理接收到的数据。

WebSocket API 适用于需要实时通信的应用场景,它可以在不同浏览器和服务器之间实现实时的双向数据传输。与传统的轮询或长轮询相比,WebSocket 提供了更高效、实时和低延迟的通信方式。然而,您需要注意处理连接中断、错误和安全性等问题。

相关文章:

MDN-Web APIs

参考资料 文章目录 简介DOM APIXMLHttpRequestWeb Storage APIWebsockets API 简介 Web APIs&#xff08;Application Programming Interfaces&#xff09;是用于与浏览器环境中的 Web 功能进行交互的一组接口和方法集合。通过 Web APIs&#xff0c;开发人员可以访问浏览器提…...

2023国赛数学建模C题思路分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…...

暑假集训笔记

刷题刷的好累啊...不想刷题了...然后就来写题解了... 昨天晚上打了场div2..2000来名&#xff0c;加了155分....现在rating1281...我是菜鸡..暑假之前就打到了1200分以上了&#xff0c;结果暑假一掉再掉&#xff0c;直接掉到1100了...然后我就一直压力很大....... 昨天在机房打…...

【枚举+推式子】牛客小白月赛 63 E

登录—专业IT笔试面试备考平台_牛客网 题意&#xff1a; 思路&#xff1a; 首先是个计数问题&#xff0c;考虑组合数学 组合数学就是在考虑枚举所有包含1和n的区间 这个典中典就是枚举1和n的位置然后算贡献 双指针超时&#xff0c;考虑推式子&#xff1a; Code&#xff1a…...

Android多屏幕支持-Android12

Android多屏幕支持-Android12 1、概览及相关文章2、屏幕窗口配置2.1 配置xml文件2.2 DisplayInfo#uniqueId 屏幕标识2.3 adb查看信息 3、配置文件解析3.1 xml字段读取3.2 简要时序图 4、每屏幕焦点 android12-release 1、概览及相关文章 AOSP > 文档 > 心主题 > 多屏…...

python环境下载安装教程,python运行环境怎么下载

本篇文章给大家谈谈python安装步骤以及环境变量配置&#xff0c;以及下载python需要设置环境变量吗&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 1.https://www.python.org/downloads/windows/ 下载适合自己电脑的python安装包 2.下载后安装即可 3.配置环…...

【0.2】lubancat鲁班猫4远程ubuntu22.04.2 无需任何安装

环境 lubancat4鲁班猫4 (4G0)不带emmc 系统镜像ubuntu-22.04.2-desktop-arm64-lubancat-4.img 网络环境:有线网络与本win10电脑同意环境 操作步骤ubuntu正常开机登陆用户&#xff0c;连接好网络进入设置>网络查看设备当前局域网IP 如192.168.199.159进入设置>共享>远程…...

Flutter 状态管理 Provider

状态管理必要性 Flutter基于声明式构建UI&#xff0c;原生则是命令式&#xff0c;状态管理是用于解决声明式开发带来的问题。 例&#xff1a;命令式的原生&#xff0c;数据更新需要拿到对应控件并更改其显示值&#xff1b;而声明式则需要更改数据值并通过setstate更新状态&am…...

【设计模式】观察者模式

什么是观察者模式&#xff1f; 观察者模式&#xff08;又被称为发布-订阅&#xff08;Publish/Subscribe&#xff09;模式&#xff0c;属于行为型模式的一种&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。这个主题对象在状态…...

ORCA优化器浅析——CDXLOperator Base class for operators in a DXL tree

如上图所示&#xff0c;CDXLOperator作为Base class for operators in a DXL tree&#xff0c;其子类CDXLLogical、CDXLScalar、CDXLPhysical作为逻辑节点、物理节点和Scalar节点的DXL表示类&#xff0c;因此其包含了这些类的共同部分特性&#xff0c;比如获取其DXL节点表示的函…...

go入门实践四-go实现一个简单的tcp-socks5代理服务

文章目录 前言socks协议简介go实现一个简单的socks5代理运行与压测抓包验证 前言 SOCKS是一种网络传输协议&#xff0c;主要用于客户端与外网服务器之间通讯的中间传递。协议在应用层和传输层之间。 本文使用先了解socks协议。然后实现一个socks5的tcp代理服务端。最后&#…...

div 中元素居中的N种常用方法

本文主要记录几种常用的div盒子水平垂直都居中的方法。本文主要参考了该篇博文并实践加以记录说明以加深理解记忆 css之div盒子居中常用方法大全 本文例子使用的 html body结构下的div 盒子模型如下&#xff1a; <body><div class"container"><div c…...

Java获取指定文件夹下目录下所有视频并复制到另一个地方

import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.StandardCopyOption;public class VideoCopier {public static void main(String[] args) {// 指定源文件夹路径和目标文件夹路径String sourceFolderPath "path/to…...

windows server 2016 搭建使用 svn 服务器教程

参考教程&#xff1a; https://zhuanlan.zhihu.com/p/428552058 https://blog.csdn.net/weixin_33897722/article/details/85602029 配置环境 windows server 2016 远程服务器公网 ip 安装 SVN 服务端 下载 svn 服务端安装包&#xff1a;https://www.visualsvn.com/download…...

【Python】如何判断时间序列数据是否为平稳时间序列或非平稳时间序列?

判断时间序列数据是否为平稳时间序列或非平稳时间序列&#xff0c;通常可以通过以下方法&#xff1a; &#xff08;1&#xff09;观察时间序列数据的均值和方差是否随时间变化而发生明显的改变。若均值和方差变化明显&#xff0c;则该时间序列数据可能为非平稳时间序列&#x…...

Labview控制APx(Audio Precision)进行测试测量(六)

用 LabVIEW 驱动 VIs生成任意波形 在 APx500 应用程序中&#xff0c;默认波形类型为正弦。这是指 APx 内置的正弦发生器&#xff0c;根据信号路径设置&#xff0c;许多测量还允许其他内置波形&#xff0c;如方波&#xff0c;分裂正弦波或分裂相位&#xff0c;以及使用导入的。w…...

【Linux】网络协议总结

目录 网络协议总结 应用层 传输层 网络层 数据链路层 网络协议总结 应用层 应用层的作用&#xff1a;负责应用程序间沟通&#xff0c;完成一系列业务处理所需服务。能够根据自己的需求&#xff0c;设计对应的应用层协议。了解HTTP协议。理解DNS的原理和工作流程。 传…...

如何轻松注册企业邮箱?快速掌握超简单的注册技巧!

随着互联网的发展&#xff0c;越来越多的企业开始使用电子邮件作为通信工具。企业邮箱不仅可以提高企业的工作效率&#xff0c;还可以使企业通信更加便捷、保密性更高。那么&#xff0c;企业邮箱怎么注册申请呢&#xff1f;下面我们来详细介绍一下。 第一步&#xff1a;选择邮箱…...

【行为型设计模式】C#设计模式之观察者模式

题目&#xff1a;假设你正在开发一个简单的新闻发布系统&#xff0c;该系统允许用户订阅不同的新闻频道&#xff0c;并在有新闻发布时向订阅者发送通知。使用观察者模式设计和实现该系统。观察者模式的相关概念和定义&#xff1a; 观察者模式是一种行为设计模式&#xff0c;它定…...

《Java面向对象程序设计》学习笔记——第 8 章 设计模式

​专栏&#xff1a;《Java面向对象程序设计》学习笔记 第 8 章 设计模式 一个好的设计系统往往是易维护、易扩展、易复用的。 8.1 设计模式简介 8.1.1 什么是设计模式 一个设计模式 (pattern) 是针对某一类问题的最佳解决方案&#xff0c;而且己经被成功应用于许多系统的设…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...