JavaScript手机振动API

 更新时间:2016年06月11日 12:48:09   投稿:lijiao  
现代浏览器里提供的新的API越来越倾向于移动手机应用,这篇文章主要为大家详细介绍了JavaScript手机振动API的相关资料,需要的朋友可以参考下

很明显,这个API就是允许mobile程序员使用JavaScript调用手机的振动功能,并且能设定振动的方式和时长。
判断浏览器对振动API的支持情况

一个好的习惯就是在使用之前要检查一下当前你的应用环境、浏览器是否支持振动API。下面就是检测的方法:

// Standards ftw!
var supportsVibrate = "vibrate" in navigator;

在window.navigator对象里就只有一个关于振动的API:vibrate。

振动API基础应用

这个navigator.vibrate函数可以接受一个数字参数,也可以接受一个数字数组,当使用数组参数时,奇数位的数值是震动秒数,偶数位为等待秒数。

// 振动1秒
navigator.vibrate(1000);

// 振动多次
// 参数分别是震动3秒,等待2秒,然后振动1秒
navigator.vibrate([3000, 2000, 1000]);

如果想停止震动,你只需要向navigator.vibrate方法里传入0,或一个空数组:

// 停止振动
navigator.vibrate(0);
navigator.vibrate([]);

需要提醒的是,对navigator.vibrate方法的调用并不会引起手机循环振动;当参数是一个数字时,振动之后发生一次,然后就停止下来。当参数是数组时,震动会按数组里的值震动,然后就停止振动。

持续震动

我们可以简单的使用setInterval 和 clearInterval 方法产生让手机持续震动的效果:

var vibrateInterval;

// Starts vibration at passed in level
function startVibrate(duration) {
 navigator.vibrate(duration);
}

// Stops vibration
function stopVibrate() {
 // Clear interval and stop persistent vibrating 
 if(vibrateInterval) clearInterval(vibrateInterval);
 navigator.vibrate(0);
}

// Start persistent vibration at given duration and interval
// Assumes a number value is given
function startPeristentVibrate(duration, interval) {
 vibrateInterval = setInterval(function() {
 startVibrate(duration);
 }, interval);
}

上面的这段代码只是针对振动参数是一个数字的情况,如果参数是数组,你还需要计算一下它的总共持续时间,然后根据它的特征来进行循环。

使用振动(Vibration) API的场景

这个API显然是针对移动手机设备的。当开发手机WEB移动应用时,它是一个很好的警示工具,当在开发Web游戏或多媒体应用时,这个振动功能更是不可或缺的好技术。比如说,当用户在用一个手机玩你的WEB游戏时,当游戏中发生爆炸,而你让手机也跟随着振动,是不是一种很出色的用户体验?

你对这个JavaScript振动API的感觉如何?是认为它会很快流行起来?还是没有多大用处?

相关文章

  • BootStrap 弹出层代码

    BootStrap 弹出层代码

    这篇文章主要介绍了BootStrap 弹出层代码的相关资料,非常补充,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • js no-repeat写法 背景不重复

    js no-repeat写法 背景不重复

    js控制背景不重复的代码
    2009-03-03
  • JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴

    JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴

    本文给大家分享一段js轮播图和自定义滚动条的代码片段,布局和样式小编没给大家多介绍,大家可以根据个人需求优化,具体实现代码,大家可以参考下面代码片段
    2016-10-10
  • 由浅到深了解JavaScript类

    由浅到深了解JavaScript类

    由浅到深了解JavaScript类...
    2007-01-01
  • 5款JavaScript代码压缩工具推荐

    5款JavaScript代码压缩工具推荐

    这篇文章主要介绍了5款JavaScript代码压缩工具推荐,代码压缩(也称代码最小化)是一个从源代码中消除所有不必要的字符的过程,需要的朋友可以参考下
    2014-07-07
  • javascript实现打砖块小游戏(附完整源码)

    javascript实现打砖块小游戏(附完整源码)

    这篇文章主要为大家详细介绍了javascript实现打砖块小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • 微信小程序获取用户openid的图文教程(含源码)

    微信小程序获取用户openid的图文教程(含源码)

    微信小程序的开发过程中,有时前端需要获取到openId来使用,下面这篇文章主要给大家介绍了关于微信小程序获取用户openid的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • 使用jsonp完美解决跨域问题

    使用jsonp完美解决跨域问题

    在项目中遇到错误提示“No 'Access-Control-Allow-Origin' header is present on the requested resource.”查了下度娘,这个问题和安全机制有关,默认不允许跨域调用,这里记录一下解决方案,防止以后再犯相同的错误。
    2014-11-11
  • webpack实用小功能介绍

    webpack实用小功能介绍

    这篇文章主要介绍了webpack实用小功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 详解uniapp分包的实现方式及优点

    详解uniapp分包的实现方式及优点

    当今移动应用开发领域,随着用户对于应用功能和体验的要求不断提高,应用程序的复杂度也在不断增加,在这种情况下,应用程序的体积也随之增大,为了解决这个问题,Uniapp提供了分包功能,本文将详细介绍Uniapp分包的功能和优势,包括如何通过配置文件实现分包
    2023-09-09

最新评论