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


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 相关文章推荐
用JS实现的一个include函数
Jul 21 Javascript
Javascript中valueOf与toString区别浅析
Mar 19 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
May 04 Javascript
吐槽一下我所了解的Node.js
Oct 08 Javascript
JS获取浏览器语言动态加载JS文件示例代码
Oct 31 Javascript
封装属于自己的JS组件
Jan 27 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
Dec 18 Javascript
浅谈webpack4 图片处理汇总
Sep 12 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
May 30 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
Aug 16 Javascript
简单了解Vue + ElementUI后台管理模板
Apr 07 Javascript
vue路由的配置和页面切换详解
Sep 09 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无限分类的类
2007/01/02 PHP
PHP XML操作的各种方法解析(比较详细)
2010/06/17 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
js面向对象编程总结
2017/02/16 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
Python设计模式之代理模式实例
2014/04/26 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
python使用zip将list转为json的方法
2018/12/31 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
Python多分支if语句的使用
2020/09/03 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
护士思想汇报
2014/01/12 职场文书
2014乡镇“三八”国际劳动妇女节活动总结
2014/03/01 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
交通事故和解协议书
2015/01/27 职场文书
教师节慰问信
2015/02/15 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
幼儿园国培研修日志
2015/11/13 职场文书
2019年入党思想汇报
2019/03/25 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript