摘要:預覽地址項目地址初衷在前端業務上生產的時候,可能仍然有部分功能需要被隱藏,只有達成特定的條件才能夠顯示,這些功能可以被稱作為實驗室功能。參考了上述多種做法,提出了使用摩斯電碼節奏作為手勢密碼,開啟實驗室功能的想法。
預覽地址: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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89843.html
摘要:目前作為騰訊手機手勢解決方案,在各大項目中都發揮著作用。因此也入選了騰訊平臺的精品組件除了國內外的項目團隊都在使用,國內外的各大網站也進行了轉載報道,作為超級小的手勢庫,騰訊的項目為什么不選擇而選擇下面從各個角度架構原理上進行一下分析。 目前AlloyFinger作為騰訊手機QQ web手勢解決方案,在各大項目中都發揮著作用。感興趣的同學可以去Github看看: https://git...
閱讀 747·2021-07-25 21:37
閱讀 3660·2019-08-30 15:55
閱讀 2574·2019-08-30 15:54
閱讀 1722·2019-08-30 15:44
閱讀 3126·2019-08-30 15:44
閱讀 862·2019-08-30 15:43
閱讀 1031·2019-08-29 15:36
閱讀 3043·2019-08-29 10:58