JavaScript WebAPI 介绍

什么是 Web API?

API 指的是应用程序编程接口(Application Programming Interface)。JavaScript WebAPI是一组由浏览器提供的API(应用程序编程接口),用于与浏览器环境进行交互和访问浏览器功能。WebAPI允许开发者通过JavaScript代码来操作DOM(文档对象模型)、处理事件、进行网络通信、操作浏览器存储等。

约束验证 DOM 方法

DOM(Document Object Model)是一种用于表示和操作HTML、XML和XHTML文档的标准化方式。它将文档结构化为一个树形结构,称为DOM树。DOM树中的每个元素、属性和文本都被表示为一个对象,这些对象可以通过JavaScript等编程语言进行访问和操作。

DOM树由多个节点组成,包括元素节点、属性节点、文本节点等。每个节点都有相应的属性和方法,可以通过这些属性和方法来获取和修改节点的内容、样式和结构。DOM树的根节点是document对象,它表示整个文档。其他节点都是从根节点开始逐级嵌套的。

DOM树的结构反映了HTML文档的嵌套关系和层次结构。通过DOM,我们可以使用JavaScript等编程语言来访问和操作HTML文档的各个部分,例如通过获取元素节点来修改元素的样式、内容等。DOM提供了一种方便的方式来操作文档,使开发者可以动态地修改和更新文档的内容和结构。

JavaScript 验证 API

约束验证 DOM 方法

checkValidity()方法

<input id="id1" type="number" min="100" max="300" required>
<button οnclick="myFunction()">OK</button>

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

<script>
function myFunction() {
  const inpObj = document.getElementById("id1");
  if (!inpObj.checkValidity()) {
    document.getElementById("demo").innerHTML = inpObj.validationMessage;
  }
}
</script>

约束验证 DOM 属性

有效性属性

nput 元素的有效性属性包含许多与数据有效性相关的属性:

实例

如果输入字段中的数字大于 100(input 元素的 max 属性),则显示一条消息:

<input id="id1" type="number" max="100">
<button οnclick="myFunction()">OK</button>

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

<script>
function myFunction() {
  let text = "Value OK";
  if (document.getElementById("id1").validity.rangeOverflow) {
    text = "Value too large";
  }
}
</script>

如果输入字段中的数字小于 100(input 元素的 min 属性),则显示一条消息:

<input id="id1" type="number" min="100">
<button οnclick="myFunction()">OK</button>

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

<script>
function myFunction() {
  let text = = "Value OK";
  if (document.getElementById("id1").validity.rangeUnderflow) {
    text = "Value too small";
  }
}
</script>

Web History API

Web History API 提供了访问 windows.history 对象的简单方法。

window.history 对象包含用户访问过的 URL(网站)。

所有浏览器都支持 Web History API:

History back() 方法

back() 方法加载 windows.history 列表中的前一个 URL。

这与单击浏览器中的“后退箭头”相同。

实例

<button οnclick="myFunction()">后退</button>

<script>
function myFunction() {
  window.history.back();
}
</script>

History go() 方法

go() 方法从历史列表中加载一个特定的 URL:

实例

<button οnclick="myFunction()">后退两页</button>

<script>
function myFunction() {
  window.history.go(-2);
}
</script>

History 对象属性

History 对象方法

Web Storage API

Web Storage API 是一种用于在浏览器中存储和检索数据的简单语法。他非常容易使用:

实例

localStorage.setItem("name", "Bill Gates");
localStorage.getItem("name");

localStorage 对象

localStorage 对象提供对特定网站的本地存储的访问。它允许您存储、读取、添加、修改和删除该域的数据项。

存储的数据没有到期日期,并且在浏览器关闭时不会被删除。

这些数据将在几天、几周和几年内均可用。

setItem() 方法

localStorage.setItem() 方法将数据项存储在 storage 中。

它接受一个名称和一个值作为参数:

实例

localStorage.getItem("name");

sessionStorage 对象

sessionStorage 对象与 localStorage 对象相同。

不同之处在于 sessionStorage 对象存储会话的数据。

当浏览器关闭时,数据会被删除。

实例

sessionStorage.getItem("name");

setItem() 方法

sessionStorage.setItem() 方法将数据项存储在存储(storage)中。

它接受一个名称和一个值作为参数:

实例

sessionStorage.setItem("name", "Bill Gates");

getItem() 方法

sessionStorage.getItem() 方法从存储(storage)中检索数据项。

它接受一个名称作为参数:

实例

sessionStorage.getItem("name");

Storage 对象属性和方法

Web Storage API 相关页面

Web Worker API

Web Worker 是在后台运行的 JavaScript,不会影响页面的性能。

什么是 Web Worker?

Web Worker是一种在Web应用程序中运行后台任务的技术。它允许在单独的线程中执行JavaScript代码,独立于主线程,从而避免阻塞用户界面。

Web Worker可以用于执行一些耗时的任务,如大量计算、数据处理、图像处理等。通过将这些任务放在后台线程中运行,Web Worker可以提高应用程序的响应性能,并防止用户界面在执行耗时任务时冻结。

Web Worker有两种类型:Dedicated Worker和Shared Worker。Dedicated Worker仅在创建它的页面内使用,而Shared Worker可以被多个页面共享。这使得多个页面可以同时与同一个后台线程进行通信和协作。

通过使用Web Worker,开发人员可以更好地优化Web应用程序的性能,并提供更好的用户体验。

检查 Web Worker 浏览器

在创建 web worker 之前,请检查用户的浏览器是否支持它:

if (typeof(Worker) !== "undefined") {
  // Yes! Web worker support!
  // Some code.....
} else {
  // Sorry! No Web Worker support..
}

创建 Web Worker 文件

现在,让我们在外部 JavaScript 中创建我们的 Web Worker。

在这里,我们创建了一个重要的脚本。该脚本存储在 "demo_workers.js" 文件中:

et i = 0;

function timedCount() {
  i ++;
  postMessage(i);
  setTimeout("timedCount()",500);
}

timedCount();

创建 Web Worker 对象

现在我们有了 web worker 文件,我们需要从 HTML 页面调用它。

以下代码行检查 worker 是否已存在,如果不存在,它会创建一个新的 web worker 对象并运行 "demo_workers.js" 中的代码:

if (typeof(w) == "undefined") {
  w = new Worker("demo_workers.js");
}

然后我们可以发送和接收来自 web worker 的消息。

向 web worker 添加一个 "onmessage" 事件侦听器。

w.onmessage = function(event){
  document.getElementById("result").innerHTML = event.data;
};

当 Web Worker 发布消息时,将执行事件侦听器中的代码。来自 Web Worker 的数据存储在 event.data 中。

终止 Web Worker

当 web worker 对象被创建时,它会继续监听消息(即使在外部脚本完成之后)直到它被终止。

如需终止 web worker,并释放浏览器/计算机资源,请使用 terminate() 方法:

w.terminate();

重用 Web Worker

如果将 worker 变量设置为 undefined,则在它终止后,您可以重用以下代码:

w = undefined;

完整的 Web Worker 实例代码

我们已经在 .js 文件中看到了 Worker 代码。下面是 HTML 页面的代码:

实例

<!DOCTYPE html>
<html>
<body>

<p>Count numbers: <output id="result"></output></p>
<button οnclick="startWorker()">Start Worker</button>
<button οnclick="stopWorker()">Stop Worker</button>

<script>
let w;

function startWorker() {
  if (typeof(w) == "undefined") {
    w = new Worker("demo_workers.js");
  }
  w.onmessage = function(event) {
    document.getElementById("result").innerHTML = event.data;
  };
}

function stopWorker() {
  w.terminate();
  w = undefined;
}
</script>

</body>
</html>

Web Worker 和 DOM

由于 Web Worker 位于外部文件中,因此他们无法访问以下 JavaScript 对象:

  • window 对象
  • document 对象
  • parent 对象JavaScript Fetch API

JavaScript Fetch API

Fetch API 实例

下面的例子获取文件并显示内容:

实例

fetch(file)
.then(x => x.text())
.then(y => myDisplay(y));

由于 Fetch 基于 async 和 await,因此上面的例子这么写可能更容易理解:

实例

async function getText(file) {
  let x = await fetch(file);
  let y = await x.text();
  myDisplay(y);

甚至可以更好:请使用易于理解的名称而不是 x 和 y:

实例

async function getText(file) {
  let myObject = await fetch(file);
  let myText = await myObject.text();
  myDisplay(myText);
}

Web Geolocation API

定位用户的位置

HTML Geolocation API 用于获取用户的地理位置。

由于这可能会损害隐私,除非用户批准,否则位置不可用。

使用 Geolocation API

getCurrentPosition() 方法用于返回用户的位置。

下面的例子返回用户位置的纬度和经度:

实例

<script>
const x = document.getElementById("demo");
function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  } else {
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}

function showPosition(position) {
  x.innerHTML = "Latitude: " + position.coords.latitude +
  "<br>Longitude: " + position.coords.longitude;
}
</script>

例子解释:

  1. 检查是否支持 Geolocation
  2. 如果支持,请运行 getCurrentPosition() 方法。如果没有,则向用户显示一条消息
  3. 如果 getCurrentPosition() 方法成功,则返回一个 coordinates 对象给参数 (showPosition) 中规定的函数
  4. showPosition() 函数输出纬度和经度

上面的例子是一个非常基本的地理定位脚本,没有错误处理。

处理错误和拒绝

getCurrentPosition() 方法的第二个参数用于处理错误。如果无法获取用户的位置,它规定要运行的函数:

实例

function showError(error) {
  switch(error.code) {
    case error.PERMISSION_DENIED:
      x.innerHTML = "User denied the request for Geolocation."
      break;
    case error.POSITION_UNAVAILABLE:
      x.innerHTML = "Location information is unavailable."
      break;
    case error.TIMEOUT:
      x.innerHTML = "The request to get user location timed out."
      break;
    case error.UNKNOWN_ERROR:
      x.innerHTML = "An unknown error occurred."
      break;
  }
}

在地图中显示结果

如需在地图中显示结果,您需要访问地图服务,例如 Google 地图。

在下面的例子中,返回的纬度和经度用于在 Google 地图中显示位置(使用静态图像):

实例

function showPosition(position) {
  let latlon = position.coords.latitude + "," + position.coords.longitude;

  let img_url = "https://maps.googleapis.com/maps/api/staticmap?center=
  "+latlon+"&zoom=14&size=400x300&sensor=false&key=YOUR_KEY";

  document.getElementById("mapholder").innerHTML = "<img src='"+img_url+"'>";
}

Location-specific 信息

此页面演示了如何在地图上显示用户的位置。

Geolocation 对于特定于位置的信息也非常有用,例如:

  • 最新的本地信息
  • 显示用户附近的兴趣点
  • 逐向导航(Turn-by-turn navigation)(GPS)

getCurrentPosition() 方法 - 返回数据

getCurrentPosition() 方法在成功时返回一个对象。会始终返回纬度、经度和精度属性。如果可用,则返回其他属性:

Geolocation 对象 - 其他有趣的方法

Geolocation 对象还有其他有趣的方法:

  • watchPosition() - 返回用户的当前位置,并随着用户移动(如汽车中的 GPS)继续返回更新的位置。
  • clearWatch() - 停止 watchPosition () 方法。

下面的例子展示了 watchPosition() 方法。你需要准确的 GPS 设备来测试(比如智能手机):

实例

<script>
const x = document.getElementById("demo");
function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.watchPosition(showPosition);
  } else {
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}
function showPosition(position) {
  x.innerHTML = "Latitude: " + position.coords.latitude +
  "<br>Longitude: " + position.coords.longitude;
}
</script>

下是一些常见的JS Web API:

  1. DOM API:用于操作和控制HTML和XML文档的API。它允许开发人员通过JavaScript来访问和修改文档的元素、属性和样式。

  2. XMLHttpRequest API:用于在后台与服务器进行异步通信的API。它允许开发人员发送HTTP请求并接收来自服务器的响应,从而实现动态更新页面内容的功能。

  3. Fetch API:提供了一种更现代和强大的方式来进行网络请求。它使用Promise对象来处理异步操作,并提供了更灵活和可扩展的功能。

  4. Geolocation API:用于获取用户设备的地理位置信息。它允许开发人员通过JavaScript来获取用户的经纬度坐标,并根据这些信息来创建基于地理位置的应用程序。

  5. Canvas API:用于在网页上绘制图形和动画的API。它提供了一系列的绘图方法和属性,使开发人员能够在网页上创建各种图形效果。

  6. Web Storage API:用于在浏览器中存储和检索数据的API。它提供了两种存储方式:localStorage和sessionStorage,开发人员可以使用这些API来存储和获取数据,以实现持久性和会话性的数据管理。

  7. Web Workers API:允许在后台线程中运行JavaScript代码,从而提高Web应用程序的性能和响应能力。它可以将一些计算密集型任务移至后台线程,以避免阻塞主线程。

这些API提供了丰富的功能和交互性,使开发人员能够创建功能强大、交互性高的Web应用程序。通过使用这些API,开发人员可以实现更好的用户体验,并提供更多的功能和服务。


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
大家都知道, Windows API是Windows操作系统的一系列的底层函数,是操作系统提供给用户进入操作系统核心进行高级编程的途径, 虽然微软在 Microsoft Visual Studio 6.0 及以下版本中提供了一个用于API浏览的API Text Viewer, 不过功能十分简陋, 部分声明有错误, 而且提供不够充足;而在 Microsoft Visual Studio 7.0 (.net) 及以上版本中为了达到跨平台、安全等一系列新特性,微软已经写好了一个内容丰富的受管制的代码类集合(.net基类库), 来完成以前要通过Windows API来完成的绝大多数任务, 虽然如此但还是有相当一部分功能必需调用Windows API来完成(如果你是VB.net或C#使用者, 强烈建议你尽可能使用.net基类库来完成你的工作); MSDN 中只有部分API的使用帮助, 而且并没有可立即复制到IDE中的API声明, 要使用某个函数不但要很好的了解这个函数的调用方法, 而且需要手动把声明转换成相应语言API声明方式。于是我就将自己以前写的API浏览软件进行了适当的改动,让它提供上面的需求。它与 Microsoft Visual Studio 6.0 自带的浏览器相比有如下增强: 1、函数、类型、常数可自由删除、添加、编辑。 2、自动代码整理功能可免去你把声明复制到IDE后还需手工整理的麻烦。 3、雷达功能,可查看任意窗口句柄与类名,可作编程时的辅助工具。 4、在函数中能实现类型自动探测、搜索、添加。 5、在查询中支持使用通配符"?"、"*"、"[]"、"[^]"来进行代替一个或多个字符,包含不包含指定字符来查询。 6、可直接将函数、类型、常数转换成VB.net/C#/易语言声明方式。 7、添加函数时可智能自动添加与函数相关的类型、注释, 添加类型时自动添加类型中的类型, 类型中的常数, 常数中的常数功能, 大大加快了函数与相关类型、常数的复制添加速度。 8、可以根据功能分组浏览声明。   9、收藏夹功能,可将一组(功能相关)API声明添加到收藏夹。 10、颜色采集功能,可以采集当前屏幕上指定点的颜色。 11、可查看同api功能的.net类库。
AngularJS是一个由Google开发JavaScript框架,它用于构建单页面应用程序(SPA)。通过使用AngularJS开发人员可以使用它的各种功能来更轻松地开发、测试和维护复杂的Web应用程序。 Web API是一种用于构建和提供Web服务的技术。它是一种基于HTTP协议的API,可以通过网络进行数据传输。Web API可以与各种客户端应用程序(如AngularJS应用程序)进行交互,并提供对数据和功能的访问。 AngularJSWeb API可以结合使用来创建强大的Web应用程序。AngularJS提供了丰富的前端功能,包括数据绑定、路由、表单验证等,使开发人员能够更轻松地构建用户友好的界面。而Web API可以提供后端数据和功能的访问,使得前端应用程序可以与服务器进行通信并获取所需的数据。 在使用AngularJSWeb API时,前端应用程序可以通过AngularJS的$http服务或者第三方库(如Angular Resource)来向Web API发送HTTP请求,并接收Web API返回的数据。通过使用标准的HTTP方法(如GET、POST、PUT、DELETE等),前端应用程序可以与Web API进行通信,并执行CRUD操作(创建、读取、更新、删除)。 另外,AngularJS还提供了测试工具和框架,可以方便地对前端应用程序进行单元测试和端到端测试。这些测试可以确保前端应用程序与Web API的交互正常,数据的处理和显示正确。 总之,AngularJSWeb API的结合可以帮助开发人员更轻松地构建、测试和维护复杂的Web应用程序。它们提供了丰富的功能和灵活的架构,使得开发人员能够构建出功能强大、用户友好的Web应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值