几种不常用Web API(振动、重力感应、联网状态、系统电量信息、页面可见性、canvas转base64、监听屏幕旋转、元素全屏显示)

简介: navigator对象中有一些不常用的API,以下主要介绍vibrate振动,deviceorientation重力感应,online联网状态,getBattery系统电量信息,visibilitychange页面可见性,toDataURL(canvas转base64),orientationchange监听屏幕旋转和fullScreen元素全屏显示。

内容介绍

  navigator对象中有一些不常用的API,以下主要介绍vibrate振动,deviceorientation重力感应,online联网状态,getBattery系统电量信息,visibilitychange页面可见性,toDataURL(canvas转base64),orientationchange监听屏幕旋转和fullScreen元素全屏显示。

一、vibrate振动

1、判断设备是否支持振动
// 判断设备是否支持振动(部分浏览器不支持)——vibrate
var vibrateStatus = window.navigator.vibrate();
2、单次震动
// 单次震动200ms
window.navigator.vibrate(200);
window.navigator.vibrate([200]);
3、间接振动
// 间接振动(振动100ms,暂停200ms,继续振动300ms,暂停400ms...,奇数振动,偶数暂停)
window.navigator.vibrate([100, 200, 300, 400]);
4、停止振动
// 停止振动(空白,[0]或数组全部为0)
window.navigator.vibrate();
window.navigator.vibrate([0]);
window.navigator.vibrate([0, 0, 0]);
5、持续振动
// 持续振动(使用setInterval和clearInterval控制开始和停止)
var vibrateInterval;

function startVibrate(duration) {
    navigator.vibrate(duration);
}

function stopVibrate() {
    if (vibrateInterval) clearInterval(vibrateInterval);
    navigator.vibrate(0);
}

function startPeristentVibrate(duration, interval) {
    vibrateInterval = setInterval(function() {
        startVibrate(duration);
    }, interval);
}

二、deviceorientation重力感应

// 重力感应方向输出——deviceorientation
if (window.DeviceOrientationEvent) {
    window.addEventListener("deviceorientation", function(event) {
        // alpha: 在Z轴上的角度
        var rotateDegrees = event.alpha;
        // gamma: 从左到右
        var leftToRight = event.gamma;
        // beta: 从前到后的运动
        var frontToBack = event.beta;
        handleOrientationEvent(frontToBack, leftToRight, rotateDegrees);
    }, true);
}
var handleOrientationEvent = function(frontToBack, leftToRight, rotateDegrees) {
    // TODO
};

三、online浏览器联网状态

1、获取当前联网状态
// 获取当前联网状态
if (navigator.onLine) {
    alert('online')
} else {
    alert('offline');
}
2、监听联网变化状态
// 监听联网变化状态
window.addEventListener("offline", function(e) {
    alert("offline");
})
window.addEventListener("online", function(e) {
    alert("online");
})

四、getBattery系统电量信息

  getBattery提供系统电量信息,返回一个battery的promise对象,然后resolve得到BatteryManager对象

// getBattery提供系统电量信息,返回一个battery的promise对象,然后resolve得到BatteryManager对象
navigator.getBattery().then(function(battery) {  
    console.log(battery)
        // 布尔值,当前是否正在充电
    let charging = battery.charging,
        // 数字,代表距离充电完毕还剩多少秒, 0 为充电完毕
        chargingTime = battery.chargingTime,
        // 数字, 代表距离电池耗空并挂起还需多少秒
        dischargingTime = battery.dischargingTime,
        // 代表电量,0.0-1.0
        level = battery.level;

    // 电池充电状态更新时调用
    battery.addEventListener('chargingchange', function() {
            alert(battery.charging ? '在充电' : '没在充电')
        })
        // 电池充电时间更新时触发
    battery.addEventListener('chargingtimechange', function(info) {
            console.log(info)
        })
        // 电池断开充电时间更新时触发
    battery.addEventListener('dischargingtimechange', function(info) {
            console.log(info)
        })
        // 电池电量更新时触发
    battery.addEventListener('levelchange', function(info) {
        console.log(info)
    })
});

五、visibilitychange页面可见性

// 页面可见性:
document.addEventListener("visibilitychange", function() {
    document.title = document.hidden ? "用户离开了" : "用户回来了";
});

六、toDataURL(canvas转base64)

<canvas width="200" height="500"></canvas>
let canvas = document.querySelector('canvas');
let pen = canvas.getContext('2d');
pen.lineTo(100, 50);
pen.lineTo(150, 100);
pen.lineTo(100, 100);
pen.lineTo(100, 50);
pen.lineTo(100, 300);
pen.lineTo(80, 300);
pen.lineTo(50, 330);
pen.lineTo(150, 330);
pen.lineTo(120, 300);
pen.lineTo(100, 300);
pen.strokeStyle = 'red';
pen.stroke();
var img = document.createElement("img");
img.src = canvas.toDataURL("image/png");
// 输出base64
console.log(img.src);

七、orientationchange监听屏幕旋转

window.addEventListener("orientationchange", () => {
    document.body.innerHTML += `<p>屏幕旋转后的角度值:${window.orientation}</p>`;
}, false);

可结合vconsole在移动端进行测试,使用方法如下:

移动端调试工具vconsole使用方法:https://blog.csdn.net/cainiaoyihao_/article/details/115461949
<!-- 引入vconsole -->
<script src="http://wechatfe.github.io/vconsole/lib/vconsole.min.js?v=3.2.0"></script>
// 初始化
var vConsole = new VConsole();

完整代码:

<body>
    <!-- 引入vconsole -->
    <script src="http://wechatfe.github.io/vconsole/lib/vconsole.min.js?v=3.2.0"></script>
    <script>
        // 初始化
        var vConsole = new VConsole();

        window.addEventListener("orientationchange", () => {
            console.log(window.orientation);
            document.body.innerHTML += `<p>屏幕旋转后的角度值:${window.orientation}</p>`;
        }, false);
    </script>
</body>

八、fullScreen元素全屏显示

// Esc退出全屏状态
// document.documentElement.webkitRequestFullScreen();
document.getElementById("csdn-toolbar").webkitRequestFullScreen();

注:
  部分浏览器不支持,注意兼容性


标签:javascript,navigator,振动,重力感应,联网状态,系统电量,页面可见性,canvas转base64,监听屏幕旋转,元素全屏显示


更多演示案例,查看 案例演示


欢迎评论留言!

相关文章
|
10天前
|
缓存 算法 API
查询域名WHOIS信息免费API接口教程
该API用于查询顶级域名的WHOIS信息,不支持国别域名和中文域名。通过POST或GET请求,需提供用户ID、KEY及待查询域名。返回信息包括域名状态、注册商、时间等详细数据。示例与文档见官网。
|
26天前
|
存储 前端开发 搜索推荐
淘宝 1688 API 接口助力构建高效淘宝代购集运系统
在全球化商业背景下,淘宝代购集运业务蓬勃发展,满足了海外消费者对中国商品的需求。掌握淘宝1688 API接口是构建成功代购系统的關鍵。本文详细介绍如何利用API接口进行系统架构设计、商品数据同步、订单处理与物流集成,以及用户管理和客户服务,帮助你打造一个高效便捷的代购集运系统,实现商业价值与用户满意度的双赢。
|
29天前
|
JSON 数据挖掘 API
电商信息指南:API接口淘宝关键词、店铺所有商品获取
要获取淘宝关键词商品数据和店铺所有商品的API接口,需先注册淘宝开放平台账号并创建应用,获取API密钥。接着,使用密钥获取访问令牌,详细阅读API文档,构造并发送API请求,解析响应数据。特别地,使用`item_search_shop`接口可获取店铺内所有商品信息。
|
1月前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
44 1
|
1月前
|
JSON API 数据格式
如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架
本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了示例代码。通过这些步骤,读者可以快速上手构建自己的RESTful API。
38 2
|
1月前
|
监控 安全 测试技术
我们为什么要API管理系统呢?
API 管理系统通过接口标准化与复用、简化开发流程、版本管理、监控与预警、访问控制、数据加密、安全审计、集中管理与共享、协作开发、快速对接外部系统和数据驱动的决策等多方面优势,显著提高开发效率、增强系统可维护性、提升系统安全性、促进团队协作与沟通,并支持业务创新与扩展。
|
2月前
|
JSON 安全 API
抖音店铺商品信息的 API
抖音店铺商品信息的 API 主要用于获取商品的详细信息,包括基本信息、属性、库存、评价、推广信息等。开发者需注册账号、申请权限、阅读文档、发送请求并处理响应。此外,还提供商品搜索和管理接口,帮助商家优化商品展示和管理订单,提高运营效率。使用时需遵守平台规则,确保数据安全和合法性。
|
2月前
|
监控 负载均衡 API
Web、RESTful API 在微服务中有哪些作用?
在微服务架构中,Web 和 RESTful API 扮演着至关重要的角色。它们帮助实现服务之间的通信、数据交换和系统的可扩展性。
51 2
|
2月前
|
Prometheus 监控 Cloud Native
调用淘宝 API 时如何处理错误信息?
调用淘宝API时,需熟悉其错误码体系,处理客户端(如参数错误、权限不足)和服务器(如内部错误、网络问题)错误,编写错误处理逻辑,并进行充分测试与监控,确保API调用稳定可靠。
|
29天前
|
编解码 API 数据库
商品详情 API 接口的返回结果通常包含哪些信息?
商品详情API接口返回的信息涵盖多个方面,主要包括商品基本信息(ID、标题、图片、价格、库存、SKU)、详细描述与规格参数、销售与评价信息(销量、好评率、评价内容、促销活动)、物流与售后信息(发货地、运费模板、退换货政策、保修期限)及店铺信息(ID、名称、评分)和关联推荐信息(相似商品、搭配商品)。这些信息有助于用户全面了解商品并做出购买决策。