const Rhyke = window.Rhyke
defaultOptions = {
// 受监听范围,默认为“body”
el: 'body',
// 定义莫斯电码节奏,短为“.”,长为“-”,默认为“...”
rhythm: '...',
// 定义电码为“长”的时间,默认为大于等于400毫秒
dashTime: 400,
// 定义输入超时时间,若超时则重新获取用户节奏输入,默认为2000毫秒
timeout: 2000,
// 是否开启移动端touch事件。默认为false,使用mouse事件作为监听,在移动端需要设置为true,
// 使用touch事件作为监听
tabEvent: false,
// 获取用户的莫斯电码节奏输入
matching: (arr) => {},
// 当输入的节奏与设定的节奏吻合时触发
matched: () => {},
// 当输入的节奏与设定的节奏不吻合时触发
unmatched: () => {},
// 当手势密码输入超时时触发
onTimeout: () => {}
}
const rhyke = new Rhyke({
rhythm: '-',
tabEvent: true,
matching(rhyArr) {
// 获取用户的莫斯电码节奏输入
// 例如 [".", ".", "-", "-", "-", "."]
console.log("获取节奏", rhyArr);
},
matched() {
// 当输入的节奏与设定的节奏吻合时触发
console.log("验证通过");
app.isActive = !app.isActive;
// alert("验证通过");
// 如果只使用一次 就在这里执行销毁
// rhyke.removeListener()
},
unmatched() {
// 当输入的节奏与设定的节奏不吻合时触发
console.log("检测到输入 不匹配");
},
onTimeout() {
// 当手势密码输入超时时触发
console.log("手势");
}
})
移动端桌面端无法同时开启。
移动端长按方案有问题。
判断错误算法可优化。