蓝旭第五周预习(BOM模型,DOM模型,常用Web API介绍)

目录

一.DOM模型

1.HTML DOM(文档对象模型)

 2.DOM编程界面

3.HTML DOM Document 对象

4.查找 HTML 元素

​编辑

5.改变 HTML 输出流

6.改变 HTML 内容

7.改变属性的值 

​编辑

8.JavaScript 表单验证

9.自动 HTML 表单验证

 10.数据验证

11.改变 HTML 样式 

​编辑

12.使用事件

​编辑

13.创建 HTML 动画

14. DOM 事件

​编辑​编辑

15.addEventListener() 方法

16.DOM 节点

​编辑​编辑

​编辑

二.BOM模型

1.获取窗口尺寸

2.打开和关闭窗口

3.移动和调整窗口尺寸

4.Screen 对象

 5.获取屏幕可用尺寸

6.Location 对象

7.获取和设置 URL

8 History 对象

9.后退和前进

10.Navigator 对象

11. 获取浏览器信息

12.弹窗

确认框

提示框

三.常用Web API介绍

 1. Fetch API

2. Web Storage API

3. Web Sockets API

4. Web Audio API

5. WebRTC API

 6. Geolocation API

7. Web Notifications API


一.DOM模型

1.HTML DOM(文档对象模型)

定义:当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。

HTML DOM 模型被结构化为对象树

DOM 是一项 网页的标准。

DOM 定义了访问文档的标准:

“ 文档对象模型(DOM)是中立于平台和语言的接口,它允许程序和脚本动态地访问、更新文档的内容、结构和样式。”

网页标准被分为 3 个不同的部分:

  • Core DOM - 所有文档类型的标准模型
  • XML DOM - XML 文档的标准模型
  • HTML DOM - HTML 文档的标准模型

HTML DOM 是 HTML 的标准对象模型和编程接口。它定义了:

  • 作为对象的 HTML 元素
  • 所有 HTML 元素的属性
  • 访问所有 HTML 元素的方法
  • 所有 HTML 元素的事件

换言之:HTML DOM 是关于如何获取、更改、添加或删除 HTML 元素的标

 2.DOM编程界面

HTML DOM 能够通过 JavaScript 进行访问(也可以通过其他编程语言)。

在 DOM 中,所有 HTML 元素都被定义为对象

编程界面是每个对象的属性和方法。

属性您能够获取或设置的值(就比如改变 HTML 元素的内容)。

方法您能够完成的动作(比如添加或删除 HTML 元素)。

实例:

下面的例子改变了 id="demo" 的 <p> 元素的内容:

<html>
<body>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = "Hello World!";<!--getElementById 是方法,而 innerHTML 是属性。-->
</script>

</body>
</html>
  • getElementById 方法

访问 HTML 元素最常用的方法是使用元素的 id。

在上面的例子中,getElementById 方法使用 id="demo" 来查找元素。

  • innerHTML 属性

    获取元素内容最简单的方法是使用 innerHTML 属性。

    innerHTML 属性可用于获取或替换 HTML 元素的内容。

    innerHTML 属性可用于获取或改变任何 HTML 元素,包括 <html> 和 <body>

3.HTML DOM Document 对象

文档对象代表您的网页。

如果您希望访问 HTML 页面中的任何元素,那么您总是从访问 document 对象开始。

下面是一些如何使用 document 对象来访问和操作 HTML 的实例。

 

4.查找 HTML 元素

通常,通过 JavaScript,您需要操作 HTML 元素。

为了达成此目的,您需要首先找到这些元素。有好几种完成此任务的方法:

  • 通过 id 查找 HTML 元素

DOM 中查找 HTML 元素最简单的方法是,使用元素的 id。

本例查找 id="intro" 的元素:

var myElement = document.getElementById("intro");
  • 通过标签名查找 HTML 元素

本例查找所有 <p> 元素:

var x = document.getElementsByTagName("p");

本例查找 id="main" 的元素,然后查找 "main" 中所有 <p> 元素:

​
var x = document.getElementById("main");
var y = x.getElementsByTagName("p"); 

​
  • 通过类名查找 HTML 元素

如果您需要找到拥有相同类名的所有 HTML 元素,请使用 getElementsByClassName()

本例返回包含 class="intro" 的所有元素的列表:

var x = document.getElementsByClassName("intro");
  • 通过 CSS 选择器查找 HTML 元素

如果您需要查找匹配指定 CSS 选择器(id、类名、类型、属性、属性值等等)的所有 HTML 元素,请使用 querySelectorAll() 方法。

本例返回 class="intro" 的所有 <p> 元素列表:

var x = document.querySelectorAll("p.intro");
  • 通过 HTML 对象集合查找 HTML 元素

本例查找 id="frm1" 的 form 元素,在 forms 集合中,然后显示所有元素值:

var x = document.forms["frm1"];
var text = "";
 var i;
for (i = 0; i < x.length; i++) {
    text += x.elements[i].value + "<br>";
}
document.getElementById("demo").innerHTML = text;

注*:HTML DOM 允许 JavaScript 改变 HTML 元素的内容。

5.改变 HTML 输出流

JavaScript 能够创建动态 HTML 内容:

在 JavaScript 中,document.write() 可用于直接写入 HTML 输出流:

<!DOCTYPE html>
<html>
<body>

<script>
document.write(Date());
</script>

</body>
</html>

运行结果:

注*:千万不要在文档加载后使用 document.write()。这么做会覆盖文档。

6.改变 HTML 内容

修改 HTML 文档内容最简单的方法是,使用 innerHTML 属性。

如需修改 HTML 元素的内容,请使用此语法:

document.getElementById(id).innerHTML = new text

本例修改了 <p> 元素的内容:

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript 可以更改 HTML</h2>

<p id="p1">Hello 小海!</p>

<script>
document.getElementById("p1").innerHTML = "Hello 美合!";
</script>

<p>上面的段落由脚本更改。</p>

</body>
</html>

7.改变属性的值 

如需修改 HTML 属性的值,请使用如下语法:本例修改了 <img> 元素的 src 属性的值:

<!DOCTYPE html>
<html>
<body>

<img id="image" src="/i/eg_smile.gif">

<script>
document.getElementById("image").src = "/i/porsche.jpg";
</script>

<p>原始图像是 eg_smile.gif,但脚本将其更改为 porsche.jpg</p>

</body>
</html>

8.JavaScript 表单验证

HTML 表单验证可以通过 JavaScript 完成。

如果表单域 (fname) 为空,该函数会提示一条消息,并返回 false,以防止表单被提交:

function validateForm() {
  let x = document.forms["myForm"]["fname"].value;
  if (x == "") {
    alert("Name must be filled out");
    return false;
  }
}

HTML+JS的实例:

<!DOCTYPE html>
<html>
<head>
<script>
function validateForm() {
  let x = document.forms["myForm"]["fname"].value;
  if (x == "") {
    alert("Name must be filled out");
    return false;
  }
}
</script>
</head>
<body>

<h1>JavaScript 验证</h1>

<form name="myForm" action="/demo/html/action_page.php" onsubmit="return validateForm()" method="post">
  姓名: <input type="text" name="fname">
  <input type="submit" value="保存">
</form>

</body>
</html>

运行结果: 

9.自动 HTML 表单验证

HTML 表单验证可以由浏览器自动执行:

如果表单字段 (fname) 为空,则 required 属性会阻止提交此表单:

<form action="/action_page.php" method="post">
  <input type="text" name="fname" required>
  <input type="submit" value="Submit">
</form>

 10.数据验证

数据验证是确保用户输入干净、正确和有用的过程。

典型的验证任务是:

  • 用户是否填写了所有必填字段?
  • 用户是否输入了有效日期?
  • 用户是否在数字字段中输入了文本?

大多数情况下,数据验证的目的是确保用户输入正确。

验证可以通过许多不同的方法定义,并以许多不同的方式部署。

服务器端验证由 Web 服务器在输入发送到服务器后执行。

在将输入发送到 Web 服务器之前,客户端验证由 Web 浏览器执行。

11.改变 HTML 样式 

如需更改 HTML 元素的样式,请使用此语法:

ocument.getElementById(id).style.property = new style

实例:

!DOCTYPE html>
<html>
<body>

<p id="p1">Hello World!</p>
<p id="p2">Hello World!</p>

<script>
document.getElementById("p2").style.color = "blue";
document.getElementById("p2").style.fontFamily = "Arial";
document.getElementById("p2").style.fontSize = "larger";
</script>

<p>第二个段落的样式已被脚本修改。</p>

</body>
</html>

12.使用事件

HTML DOM 允许您在事件发生时执行代码。

当“某些事情”在 HTML 元素上发生时,浏览器会生成事件:

  • 点击某个元素时
  • 页面加载时
  • 输入字段被更改时

您将在本教程的下一章学到更多有关事件的知识。

本例会在用户点击按钮时,更改 id="id1" 的 HTML 元素的样式:

实例:

<!DOCTYPE html>
<html>
<body>

<h1 id="id1">我的标题</h1>

<button type="button" 
onclick="document.getElementById('id1').style.color = 'red'">
单击我!</button>

</body>
</html>

 运行结果:

13.创建 HTML 动画

  • 基础页面

为了演示如何通过 JavaScript 来创建 HTML 动画,我们将使用一张简单的网页:

实例:

<!DOCTYPE html>
<html>
<body>

<h1>我的第一部 JavaScript 动画</h1>

<div id="animation">我的动画在这里。</div>

</body>
</html>
  • 创建动画容器

所有动画都应该与容器元素关联。

<div id ="container">
    <div id ="animate">我的动画在这里。</div>
</div>
  • 为元素添加样式

应该通过 style = "position: relative" 创建容器元素。

应该通过 style = "position: absolute" 创建动画元素。

#container {
    width: 400px;
    height: 400px;
    position: relative;
    background: yellow;
}
#animate {
    width: 50px;
    height: 50px;
    position: absolute;
    background: red;
} 
  • 动画代码

JavaScript 动画是通过对元素样式进行渐进式变化编程完成的。

这种变化通过一个计数器来调用。当计数器间隔很小时,动画看上去就是连贯的。

基础代码是:

var id = setInterval(frame, 5);

function frame() {
    if (/* 测试是否完成 */) {
        clearInterval(id);
    } else {
         /* 改变元素样式的代码 */
    }
} 

 对应的例子:

<!DOCTYPE html>
<html>
<style>
#container {
  width: 400px;
  height: 400px;
  position: relative;
  background: yellow;
}
#animate {
  width: 50px;
  height: 50px;
  position: absolute;
  background-color: red;
}
</style>
<body>

<p><button onclick="myMove()">单击我</button></p> 

<div id ="container">
  <div id ="animate"></div>
</div>

<script>
function myMove() {
  var elem = document.getElementById("animate");   
  var pos = 0;
  var id = setInterval(frame, 5);
  function frame() {
    if (pos == 350) {
      clearInterval(id);
    } else {
      pos++; 
      elem.style.top = pos + "px"; 
      elem.style.left = pos + "px"; 
    }
  }
}
</script>

</body>
</html>

14. DOM 事件

HTML DOM 允许 JavaScript 对 HTML 事件作出反应.

JavaScript 能够在事件发生时执行,比如当用户点击某个 HTML 元素时。

为了在用户点击元素时执行代码,请向 HTML 事件属性添加 JavaScript 代码:

onclick=JavaScript

在本例中,当用户点击 <h1> 时,会改变其内容:

<!DOCTYPE html>
<html>
<body>

<h1 onclick="this.innerHTML='不用谢!'">谢谢!</h1>

</body>
</html>

在本例中,从事件处理程序调用函数:

<!DOCTYPE html>
<html>
<body>

<h1 onclick="changeText(this)">点击此文本!</h1>

<script>
function changeText(id) { 
    id.innerHTML = "Hello:)";
}
</script>

</body>
</html> 

 HTML 事件属性:如需向 HTML 元素分配事件,您能够使用事件属性。

向 button 元素分配 onclick 事件:

<button onclick="displayDate()">试一试</button>

使用 HTML DOM 分配事件:HTML DOM 允许您使用 JavaScript 向 HTML 元素分配事件:

为 button 元素指定 onclick 事件:

<script>
document.getElementById("myBtn").onclick = displayDate;
</script> 

注:在上例中,名为 displayDate 的函数被分配到 id="myBtn" 的 HTML 元素。

当点击按钮时将执行函数。

onload 和 onunload 事件

当用户进入后及离开页面时,会触发 onload 和 onunload 事件。

onload 事件可用于检测访问者的浏览器类型和浏览器版本,然后基于该信息加载网页的恰当版本。

onload 和 onunload 事件可用于处理 cookie。

<!DOCTYPE html>
<html>
<body onload="checkCookies()">

<p id="demo"></p>

<script>
function checkCookies() {
  var text = "";
  if (navigator.cookieEnabled == true) {
    text = "Cookie 已启用";
  } else {
    text = "Cookie 未启用";
  }
  document.getElementById("demo").innerHTML = text;
}
</script>

</body>
</html>

onchange 事件

onchange 事件经常与输入字段验证结合使用。

下面是一个如何使用 onchange 的例子。当用户改变输入字段内容时,会调用 upperCase() 函数。

<!DOCTYPE html>
<html>
<head>
<script>
function myFunction() {
  var x = document.getElementById("fname");
  x.value = x.value.toUpperCase();
}
</script>
</head>
<body>

请输入您的名字:<input type="text" id="fname" onchange="myFunction()">

<p>离开输入字段时,会触发一个函数,将输入文本转换为大写。</p>

</body>
</html>

运行结果:

onmouseover 和 onmouseout 事件

onmouseover 和 onmouseout 事件可用于当用户将鼠标移至 HTML 元素上或移出时触发某个函数

<!DOCTYPE html>
<html>
<body>

<div onmouseover="mOver(this)" onmouseout="mOut(this)" 
style="background-color:#D94A38;width:120px;height:20px;padding:40px;">
请把鼠标移上来</div>

<script>
function mOver(obj) {
  obj.innerHTML = "谢谢您"
}

function mOut(obj) {
  obj.innerHTML = "请把鼠标移上来"
}
</script>

</body>
</html>

onmousedown, onmouseup 以及 onclick 事件

onmousedownonmouseup 以及 onclick 事件构成了完整的鼠标点击事件。

首先当鼠标按钮被点击时,onmousedown 事件被触发;然后当鼠标按钮被释放时,onmouseup 事件被触发;最后,当鼠标点击完成后,onclick 事件被触发。

<!DOCTYPE html>
<html>
<body>

<div onmousedown="mDown(this)" onmouseup="mUp(this)"
style="background-color:#D94A38;width:90px;height:20px;padding:40px;">
点击鼠标</div>

<script>
function mDown(obj) {
  obj.style.backgroundColor = "#1ec5e5";
  obj.innerHTML = "松开鼠标";
}

function mUp(obj) {
  obj.style.backgroundColor="#D94A38";
  obj.innerHTML="谢谢您";
}
</script>

</body>
</html>

15.addEventListener() 方法

添加当用户点击按钮时触发的事件监听器:

document.getElementById("myBtn").addEventListener("click", displayDate);

addEventListener() 方法为指定元素指定事件处理程序。

addEventListener() 方法为元素附加事件处理程序而不会覆盖已有的事件处理程序。

您能够向一个元素添加多个事件处理程序。

您能够向一个元素添加多个相同类型的事件处理程序,例如两个 "click" 事件。

您能够向任何 DOM 对象添加事件处理程序而非仅仅 HTML 元素,例如 window 对象。

addEventListener() 方法使我们更容易控制事件如何对冒泡作出反应。

当使用 addEventListener() 方法时,JavaScript 与 HTML 标记是分隔的,已达到更佳的可读性;即使在不控制 HTML 标记时也允许您添加事件监听器。

您能够通过使用 removeEventListener() 方法轻松地删除事件监听器。

语法

element.addEventListener(event, function, useCapture);

第一个参数是事件的类型(比如 "click" 或 "mousedown")。

第二个参数是当事件发生时我们需要调用的函数。

第三个参数是布尔值,指定使用事件冒泡还是事件捕获。此参数是可选的。

注意:请勿对事件使用 "on" 前缀;请使用 "click" 代替 "onclick"。

向元素添加事件处理程序

当用户点击某个元素时提示 "Hello World!":

element.addEventListener("click", function(){ alert("Hello World!"); });

您也可以引用外部“命名”函数:

当用户点击某个元素时提示 "Hello World!":

element.addEventListener("click", myFunction);

function myFunction() {
    alert ("Hello World!");
}

向相同元素添加多个事件处理程序

addEventListener() 方法允许您向相同元素添加多个事件,同时不覆盖已有事件:

实例:

element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);

您能够向相同元素添加不同类型的事件:

实例:

element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);

向 Window 对象添加事件处理程序

addEventListener() 允许您将事件监听器添加到任何 HTML DOM 对象上,比如 HTML 元素、HTML 对象、window 对象或其他支持事件的对象,比如 xmlHttpRequest 对象。

添加当用户调整窗口大小时触发的事件监听器:

window.addEventListener("resize", function(){
    document.getElementById("demo").innerHTML = sometext;
});

传递参数

当传递参数值时,请以参数形式使用调用指定函数的“匿名函数”:

element.addEventListener("click", function(){ myFunction(p1, p2); });

事件冒泡还是事件捕获?

在 HTML DOM 中有两种事件传播的方法:冒泡和捕获。

事件传播是一种定义当发生事件时元素次序的方法。假如 <div> 元素内有一个 <p>,然后用户点击了这个 <p> 元素,应该首先处理哪个元素“click”事件?

在冒泡中,最内侧元素的事件会首先被处理,然后是更外侧的:首先处理 <p> 元素的点击事件,然后是 <div> 元素的点击事件。

在捕获中,最外侧元素的事件会首先被处理,然后是更内侧的:首先处理 <div> 元素的点击事件,然后是 <p> 元素的点击事件。

在 addEventListener() 方法中,你能够通过使用“useCapture”参数来规定传播类型:

addEventListener(event, function, useCapture);

默认值是 false,将使用冒泡传播,如果该值设置为 true,则事件使用捕获传播。

document.getElementById("myP").addEventListener("click", myFunction, true);
document.getElementById("myDiv").addEventListener("click", myFunction, true);

removeEventListener() 方法

removeEventListener() 方法会删除已通过 addEventListener() 方法附加的事件处理程序:

element.removeEventListener("mousemove", myFunction);

16.DOM 节点

HTML 文档中的所有事物都是节点:

  • 整个文档是文档节点
  • 每个 HTML 元素是元素节点
  • HTML 元素内的文本是文本节点
  • 每个 HTML 属性是属性节点
  • 所有注释是注释节点

子节点和节点值

DOM 处理中的一种常见错误是认为元素节点中包含文本。

<title id="demo">DOM 教程</title>

注意*:(上面例子中的)元素节点 <title> 不包含文本。

它包含了值为 "DOM 教程" 的文本节点

文本节点的值能够通过节点的 innerHTML 属性进行访问:

var myTitle = document.getElementById("demo").innerHTML;

访问 innerHTML 属性等同于访问首个子节点的 nodeValue

var myTitle = document.getElementById("demo").firstChild.nodeValue;

也可以这样访问第一个子节点:

var myTitle = document.getElementById("demo").childNodes[0].nodeValue;

以下三个例子取回 <h1> 元素的文本并复制到 <p> 元素中:

<html>
<body>

<h1 id="id01">我的第一张页面</h1>
<p id="id02">Hello!</p>

<script>
 document.getElementById("id02").innerHTML  = document.getElementById("id01").innerHTML;
</script>

</body>
</html>
<html>
<body>

<h1 id="id01">我的第一张页面</h1>
<p id="id02">Hello!</p>

<script>
 document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue;
</script>

</body>
</html>
<html>
<body>

<h1 id="id01">我的第一张页面</h1>
<p id="id02">Hello!</p>

<script>
 document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue;
</script>

</body>
</html>

InnerHTML

在使用 innerHTML 取回 HTML 元素的内容。

不过,学习以上其他的方法有助于理解 DOM 的树结构和导航。

DOM 根节点

有两个特殊属性允许访问完整文档:

  • document.body - 文档的 body
  • document.documentElement - 完整文档
<html>
<body>

<p>Hello World!</p>
<div>
<p>DOM 很有用!</p>
<p>本例演示 <b>document.documentElement</b> 属性。</p>
</div>

<script>
alert(document.documentElement.innerHTML);
</script>

</body>
</html>

nodeName 属性

nodeName 属性规定节点的名称。

  • nodeName 是只读的
  • 元素节点的 nodeName 等同于标签名
  • 属性节点的 nodeName 是属性名称
  • 文本节点的 nodeName 总是 #text
  • 文档节点的 nodeName 总是 #document
<h1 id="id01">我的第一张网页</h1>
<p id="id02">Hello!</p>

<script>
document.getElementById("id02").innerHTML  = document.getElementById("id01").nodeName;
</script>

 注释:nodeName 总是包含 HTML 元素的大写标签名。

 nodeValue 属性

nodeValue 属性规定节点的值。

  • 元素节点的 nodeValue 是 undefined
  • 文本节点的 nodeValue 是文本
  • 属性节点的 nodeValue 是属性值
  • nodeType 属性返回节点的类型。nodeType 是只读的。
<h1 id="id01">我的第一张网页</h1>
<p id="id02">Hello!</p>

<script>
document.getElementById("id02").innerHTML  = document.getElementById("id01").nodeType;
</script>

 节点与集合

 

二.BOM模型

浏览器对象模型(Browser Object Model (BOM))允许 JavaScript 与浏览器对话。

 Window 对象
`window` 对象是 BOM 的核心,它代表了浏览器窗口本身。所有其他 BOM 对象都是 `window` 对象的属性。

1.获取窗口尺寸

// 获取浏览器窗口的内部宽度和高度
var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

// 显示窗口尺寸
document.getElementById("demo").innerHTML = "浏览器window宽度: " + w + ", 高度: " + h + ".";

2.打开和关闭窗口

// 打开新窗口
window.open('https://www.example.com', '_blank');
// 关闭当前窗口
window.close();

3.移动和调整窗口尺寸

// 移动当前窗口
window.moveTo(100, 100);
// 调整当前窗口的尺寸
window.resizeTo(500, 500);

4.Screen 对象

`screen` 对象包含了有关用户屏幕的信息。

 5.获取屏幕可用尺寸

// 获取屏幕的可用宽度和高度
var availWidth = screen.availWidth;
var availHeight = screen.availHeight;
// 显示屏幕尺寸
console.log("屏幕可用宽度: " + availWidth + ", 高度: " + availHeight);

6.Location 对象

`location` 对象包含了当前页面的 URL 信息。

7.获取和设置 URL

// 获取当前页面的 URL
console.log("当前页面的 URL: " + location.href);
// 设置新的 URL
location.href = 'https://www.example.com';

8 History 对象

`history` 对象包含了用户访问过的 URL 历史。

9.后退和前进

// 后退到上一个页面
history.back();
// 前进到下一个页面
history.forward();

10.Navigator 对象

`navigator` 对象包含了有关浏览器的信息。

11. 获取浏览器信息

// 获取浏览器的名称和版本
console.log("浏览器名称: " + navigator.appName);
console.log("浏览器版本: " + navigator.appVersion);

12.弹窗

BOM 提供了三种系统对话框:警告框、确认框和提示框。

  • 警告框

// 显示警告框
alert("这是一个警告框!");
  • 确认框
// 显示确认框
if (confirm("你确定要继续吗?")) {
    console.log("用户点击了确认");
} else {
    console.log("用户点击了取消");
}
  • 提示框
// 显示提示框
var userInput = prompt("请输入你的名字:", "默认值");
if (userInput !== null) {
    console.log("用户输入: " + userInput);
} else {
    console.log("用户点击了取消");
}

 参考资料:



1.http://(https://m.jb51.net/article/185565.htm)

2.https://m.jb51.net/article/176461.htm

3.http://www.cppcns.com/wangluo/javascript/310486.html

三.常用Web API介绍

API 指的是应用程序编程接口(Application Programming Interface)。
Web API 是一组预定义的接口,允许 Web 应用程序与 Web 浏览器或其他应用程序进行交互。
以下是一些常用的 Web API 及其代码实例:


 1. Fetch API

Fetch API 提供了一个获取资源的接口,它比传统的 XMLHttpRequest 更加灵活和强大。

fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

2. Web Storage API

Web Storage API 提供了在客户端存储键值对的方法,包括 localStorage 和 sessionStorage。

// 存储数据
localStorage.setItem('key', 'value');

// 获取数据
let value = localStorage.getItem('key');

// 删除数据
localStorage.removeItem('key');

// 清除所有数据
localStorage.clear();

3. Web Sockets API

Web Sockets API 用于在客户端和服务器之间建立一个全双工通信通道。

// 创建 WebSocket 连接
const socket = new WebSocket('ws://example.com');

// 监听连接打开事件
socket.addEventListener('open', function (event) {
  socket.send('Hello Server!');
});

// 监听消息事件
socket.addEventListener('message', function (event) {
  console.log('Message from server ', event.data);
});

// 关闭连接
socket.close();

4. Web Audio API

Web Audio API 提供了在 Web 应用程序中处理音频的高级功能。

// 创建音频上下文
const audioContext = new (window.AudioContext || window.webkitAudioContext)();

// 加载音频文件
const audioBuffer = await fetch('sound.mp3')
  .then(response => response.arrayBuffer())
  .then(audioBuffer => audioContext.decodeAudioData(audioBuffer));

// 创建音频源
const source = audioContext.createBufferSource();
source.buffer = audioBuffer;

// 连接音频源到扬声器
source.connect(audioContext.destination);

// 播放音频
source.start();

5. WebRTC API

WebRTC API 允许在不需要中间服务器的情况下,进行点对点(Peer-to-Peer)的视频通话或数据共享。

// 获取媒体设备
navigator.mediaDevices.getUserMedia({ video: true, audio: true })
  .then(function(stream) {
    // 使用获取的媒体流
    const video = document.querySelector('video');
    video.srcObject = stream;
    video.play();
  })
  .catch(function(error) {
    console.log('获取媒体设备失败:', error);
  });

 6. Geolocation API

Geolocation API 提供了访问设备位置信息的能力。

// 获取当前位置
navigator.geolocation.getCurrentPosition(function(position) {
  console.log('Latitude: ' + position.coords.latitude + ', Longitude: ' + position.coords.longitude);
}, function(error) {
  console.log('获取位置失败:', error);
});

7. Web Notifications API

Web Notifications API 允许网页向用户显示通知。

// 请求权限
Notification.requestPermission().then(function(permission) {
  if (permission === 'granted') {
    // 显示通知
    new Notification('Hello World!', {
      body: 'This is a notification message.'
    });
  }
});

参考资料:

1.https://m.bilibili.com/video/BV1w3411k7Pg/

2.https://www.zhihu.com/tardis/sogou/art/444025501

3.https://www.cnblogs.com/jiangge23/p/17128948.html

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值