分享网页检测摇一摇实例代码


Posted in Javascript onJanuary 14, 2016

废话不多说了,直接给大家贴代码了,具体代码如下所示:

var Shaker = function(f){
// 摇一摇: 检测到3次摇动算一次摇一摇, 摇动后调用处理函数, 不再检测摇动
// f 摇动后的回调
this.callback = f;
this.status = 0; // 0: 侦听未开始 1: 侦听开始 
this.speed = 15;
this.lastX = this.lastY = this.lastZ = 0;
this.num = 0; // 检测触发次数
this.minNum = 3; // 最小检测触发次数
this.beginSecond = 0; // 开始检测的秒数
this.maxSecond = 3; // 最大间隔秒数
this.handlerWrap = function(){};
}
Shaker.prototype.listen = function(){
// 侦听摇动
var that = this;
if (this.status == 0 && window.DeviceMotionEvent) {
this.status = 1;
this.handlerWrap = function(event){
that.handler(event)
}
window.addEventListener('devicemotion', this.handlerWrap, false);
}
}
Shaker.prototype.release = function(){
// 停止侦听
if(this.status == 1){
if (window.DeviceMotionEvent) {
window.removeEventListener('devicemotion', this.handlerWrap);
}
this.status = 0;
this.num = 0;
}
}
Shaker.prototype.reset = function(){
// 重置检测
if(this.status == 1){
this.num = 0;
}
}
Shaker.prototype.handler = function(event){
// 传感器事件处理
if(this.status == 1){
var acceleration =event.accelerationIncludingGravity;
var x = acceleration.x;
var y = acceleration.y;
var z = acceleration.z;
if( Math.abs(x-this.lastX) > this.speed || 
Math.abs(y-this.lastY) > this.speed || 
Math.abs(z-this.lastZ) > this.speed ) 
{
if(this.num == 0){
this.beginSecond = Date.parse(new Date()) / 1000
}
this.num += 1;
}
this.lastX = x;
this.lastY = y;
this.lastZ = z;
if(this.num >= this.minNum){
var now = Date.parse(new Date()) / 1000;
if(now - this.beginSecond <= this.maxSecond){
this.release();
if(this.callback){
this.callback();
}
}
this.reset();
}
}
}

用法:

var s = new Shaker(function(){ /*摇动后的回调*/ });
s.listen();

好了,本文所述给大家介绍到这里,后续还会持续更新,希望本文给大家分享网页检测摇一摇实例代码的相关知识对大家有所帮助。

Javascript 相关文章推荐
html下载本地
Jun 19 Javascript
点击页面其它地方隐藏该div的两种思路
Nov 18 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
Feb 23 Javascript
浅析Node.js查找字符串功能
Sep 03 Javascript
js智能获取浏览器版本UA信息的方法
Aug 08 Javascript
js 两个日期比较相差多少天的实例
Oct 19 Javascript
小程序实现选择题选择效果
Nov 04 Javascript
使用express获取微信小程序二维码小记
May 21 Javascript
jquery多级树形下拉菜单的实例代码
Jul 09 jQuery
javascript 构建模块化开发过程解析
Sep 11 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
Apr 24 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
Sep 10 Javascript
jquery淡入淡出效果简单实例
Jan 14 #Javascript
jQuery实现的左右移动焦点图效果
Jan 14 #Javascript
详解JavaScript中的构造器Constructor模式
Jan 14 #Javascript
jquery+json实现动态商品内容展示的方法
Jan 14 #Javascript
jQuery遮罩层效果实例分析
Jan 14 #Javascript
JavaScript面向对象之私有静态变量实例分析
Jan 14 #Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
Jan 14 #Javascript
You might like
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
python Zmail模块简介与使用示例
2020/12/19 Python
LN-CC中国:高端男装和女装的奢侈时尚目的地
2019/09/14 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
教育局长自荐信范文
2013/12/22 职场文书
项目考察欢迎辞
2014/01/17 职场文书
研究生导师推荐信
2014/09/06 职场文书
2014年科室工作总结
2014/11/20 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
2015年新教师工作总结
2015/04/28 职场文书
Django REST framework 限流功能的使用
2021/06/24 Python
业余无线电通联Q语
2022/02/18 无线电
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers