摘要:预览地址项目地址初衷在前端业务上生产的时候,可能仍然有部分功能需要被隐藏,只有达成特定的条件才能够显示,这些功能可以被称作为实验室功能。参考了上述多种做法,提出了使用摩斯电码节奏作为手势密码,开启实验室功能的想法。
预览地址:https://jrainlau.github.io/rh...
项目地址:https://github.com/jrainlau/r...
在前端业务上生产的时候,可能仍然有部分功能需要被隐藏,只有达成特定的条件才能够显示,这些功能可以被称作为“实验室功能”。常规的做法就是类似Segmentfault,知乎之类的应用,在层级较深的地方设置一个开关以开启实验室功能,又或者像微信那样通过在对话框输入特定的字符串,来启用隐藏的功能。RhykeJS参考了上述多种做法,提出了使用摩斯电码节奏作为手势密码,开启实验室功能的想法。
原理RhykeJS名字来源于“rhythm”和“awake”的组合,也就是“通过节奏唤醒”。
在RhykeJS内部,监听了指定范围内的用户点击事件(mouse或者touch事件)。通过设置dashTime,可以指定一个时间区分“短信号”和“长信号”并直接转化成节奏.和-。当输入节奏与设定节奏相吻合时,则触发事件。
可以在codepen进行预览:
https://codepen.io/jrainlau/p...
支持通过yarn或npm进行安装。
yarn add rhyke
或
npm install rhyke --save
RhykeJS被打包成了UMD模块,支持ES Modules,CommonJS和Web浏览器方式进行引入。
ES6 modules
import Rhyke from "rhyke"
CommonJS
const Rhyke = require("rhyke")
Web broswer
使用
被引入进来的Rhyke实例是一个构造函数,需要通过new操作符并传入配置对象进行初始化。
const rhyke = new Rhyke({ rhythm: "...---...", matching (rhyArr) { // 获取用户的莫斯电码节奏输入 // 例如 [".", ".", "-", "-", "-", "."] }, matched () { // 当输入的节奏与设定的节奏吻合时触发 }, unmatched () { // 当输入的节奏与设定的节奏不吻合时触发 }, onTimeout () { // 当手势密码输入超时时触发 } })配置
Rhyke接受一个配置对象作为参数
defaultOptions = { // 受监听范围,默认为“body” el: "body", // 定义莫斯电码节奏,短为“.”,长为“-”,默认为“...” rhythm: "...", // 定义电码为“长”的时间,默认为大于等于400毫秒 dashTime: 400, // 定义输入超时时间,若超时则重新获取用户节奏输入,默认为2000毫秒 timeout: 2000, // 是否开启移动端touch事件。默认为false,使用mouse事件作为监听,在移动端需要设置为true, // 使用touch事件作为监听 tabEvent: false, // 获取用户的莫斯电码节奏输入 matching: (arr) => {}, // 当输入的节奏与设定的节奏吻合时触发 matched: () => {}, // 当输入的节奏与设定的节奏不吻合时触发 unmatched: () => {}, // 当手势密码输入超时时触发 onTimeout: () => {} }API
有时候可能只需要开启一次实验室功能,在开启完毕以后把受监听范围的Rhyke事件注销,那么可以在matched阶段的最后通过下列方法进行事件解绑:
matched () { // something was awoke rhyke.removeListener() }证书
MIT
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/89843.html
摘要:目前作为腾讯手机手势解决方案,在各大项目中都发挥着作用。因此也入选了腾讯平台的精品组件除了国内外的项目团队都在使用,国内外的各大网站也进行了转载报道,作为超级小的手势库,腾讯的项目为什么不选择而选择下面从各个角度架构原理上进行一下分析。 目前AlloyFinger作为腾讯手机QQ web手势解决方案,在各大项目中都发挥着作用。感兴趣的同学可以去Github看看: https://git...
阅读 743·2021-07-25 21:37
阅读 3658·2019-08-30 15:55
阅读 2573·2019-08-30 15:54
阅读 1720·2019-08-30 15:44
阅读 3125·2019-08-30 15:44
阅读 860·2019-08-30 15:43
阅读 1026·2019-08-29 15:36
阅读 3040·2019-08-29 10:58