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


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 相关文章推荐
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
各种常用的JS函数整理
Oct 25 Javascript
jQuery窗口、文档、网页各种高度的精确理解
Jul 02 Javascript
node.js中的socket.io的广播消息
Dec 15 Javascript
javascript字符串函数汇总
Dec 06 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
Jul 28 Javascript
利用JS实现简单的瀑布流加载图片效果
Apr 22 Javascript
BACKBONE.JS 简单入门范例
Oct 17 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
Dec 15 Javascript
layer父页获取弹出层输入框里面的值方法
Sep 02 Javascript
Js on及addEventListener原理用法区别解析
Jul 11 Javascript
VUE实时监听元素距离顶部高度的操作
Jul 29 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和ACCESS写聊天室(一)
2006/10/09 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
PHP合并静态文件详解
2014/11/14 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
php+mysql实现无限级分类
2015/11/11 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
javascript 拖动表格行实现代码
2011/05/05 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
jQuery Checkbox 全选 反选的简单实例
2016/11/29 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
微信小程序开发教程之增加mixin扩展
2017/08/09 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
Python实现股市信息下载的方法
2015/06/15 Python
python实现数据库跨服务器迁移
2018/04/12 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
将python安装信息加入注册表的示例
2019/11/20 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
赡养老人协议书
2014/04/21 职场文书
公司运动会策划方案
2014/05/25 职场文书
应届生简历自我评价
2015/03/11 职场文书
大学生村官入党自传
2015/06/26 职场文书
女性励志书籍推荐
2019/08/19 职场文书
python tkinter实现定时关机
2021/04/21 Python
详解Vue的列表渲染
2021/11/20 Vue.js