摘要:項目地址概要這是一個半自動化的鍵盤訪問解決方案,主要適用于需要完全鍵盤操作場景,比如大屏展示,電視,游戲菜單等,大大簡化按鍵操作的邏輯。半自動化由于實際場景復(fù)雜多樣,過于全反而會讓業(yè)務(wù)代碼更繁雜。這一部分是對按鍵的回調(diào)回車確定。
項目地址 https://github.com/XboxYan/auto-keyboard
概要這是一個半自動化的鍵盤訪問解決方案,主要適用于需要完全鍵盤操作場景,比如大屏展示,電視,游戲菜單等,大大簡化按鍵操作的邏輯。
焦點使用虛擬焦點,也就是通過添加.focus等class實現(xiàn),而不是原生自帶的:focus,更利于定制化需求。
基于HTML頁面。
比較冷門,鍵盤交互方向,不感興趣的可以跳過。半自動化
由于實際場景復(fù)雜多樣,過于全反而會讓業(yè)務(wù)代碼更繁雜。
該功能插件僅針對于局部實現(xiàn)自動化操作,整體頁面布局仍需開發(fā)者手動協(xié)調(diào)。
具體是指開發(fā)者需要手動講頁面分為幾塊邏輯區(qū)域,比如下方的鍵盤區(qū)和搜索列表區(qū)。
然后對每塊區(qū)域分別調(diào)用new View()即可
var S = $("search"); var L = $("list"); var V = new View(S); var Vl = new View(L); V.init(S.getElementsByTagName("a")); Vl.init(L.getElementsByTagName("li")); V.onfocus();
這樣,每塊區(qū)域的按鍵都已經(jīng)自動適配了。
API通過new View(#container)適配的區(qū)域,可獲焦元素可以是常見的n*m分布,也可以是絕對定位的任意布局。
通過V.init(children)來初始化可獲焦子元素,傳入nodeList即可,與頁面層級無關(guān)。
new View(container)核心方法。創(chuàng)建一個區(qū)域,傳入?yún)?shù)為頁面的一個容器。
var con = document.getElemetById("con"); var V = new View(con);V.init(nodeList)
初始化,傳入?yún)?shù)為需要獲焦的子元素,通常使用getElementsByTagName來一次性傳入多個。
該方法需要等待頁面加載完全后使用,也就是說當動態(tài)加載網(wǎng)絡(luò)數(shù)據(jù)時,需等待只元素加入容器之后調(diào)用
V.init(S.getElementsByTagName("a")); //動態(tài)數(shù)據(jù) ajax({ url:"XXX", sunccess:function(data){ var html = ""; for(var i=0;i"+data[i]+""; } S.innerHTML = html; V.init(S.getElementsByTagName("a")); } })
可以傳空。此時表示該區(qū)域里面沒有可獲焦元素,常見場景為新聞類,此時該區(qū)域可以自動實現(xiàn)上下瀏覽的功能。
V.insertAfter(nodeList)向后追加子元素。常見場景為上拉加載,追加下一頁等功能。
ajax({ url:"XXX", sunccess:function(data){ var html = ""; for(var i=0;iV.insertBefore(nodeList)"+data[i]+""; } M.innerHTML = html; V.insertAfter(M.getElementsByTagName("a")); } })
與insertAfter相反,向前追加子元素。
V.onfocus()主動聚焦,當有多個區(qū)域時,可選擇控制。
var V = new View(S); V.onfocus();Calback
這一部分是對按鍵的回調(diào)
V.ok回車、確定。
Vi.ok = function(item){ console.log(item)//當前獲焦元素的dom節(jié)點 }
當按下確定時,會給當前獲焦元素添加pressIn類,抬起時移除,可自定義按下效果。
V.left、V.right、V.up、V.down向左/右/上/下(處于邊界時)。當獲焦元素處于區(qū)域邊界時觸發(fā)。一般用于跨越區(qū)域。
Vl.left = function(){ V.onfocus();//此時Vl會自動失去焦點,V會主動獲焦 }
當處于邊界時,如果沒有指定觸發(fā)回調(diào),比如V.left,會給當前獲焦元素添加shake類,這是一個顫抖動畫,300ms自動移除。
V.back返回。當按返回鍵時觸發(fā)。
V.move移動時觸發(fā),回調(diào)參數(shù)為移動之前的元素,和移動之后的元素。
V.move = function (prev, current) { //prev移動之前 //current移動之前后 }props V.saveCurrent
是否保留當前狀態(tài),類名為current。一般用作tab切換時跟隨。默認為false。
V.saveCurrentDelay是否保留當前狀態(tài),類名為current。一般用作tab切換時跟隨,但是需要點擊ok觸發(fā)。默認為false。
V.scrollAnimate是否啟用滾動動畫。該功能使用smoothscroll.js完成,如果不支持該插件,可禁用滾動動畫。
案例https://web.codelabo.cn/auto-keyboard/
請使用鍵盤方向鍵上下左右體驗
可以查看源碼,代碼量很小結(jié)語
目前市面上并沒有什么對鍵盤操作封裝的庫,鍵盤什么的這個方向確實比較窄,或者說比較冷門,希望能夠幫助特定的人群吧。
有這方面興趣的歡迎交流,一起討論。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/53762.html
摘要:項目地址概要這是一個半自動化的鍵盤訪問解決方案,主要適用于需要完全鍵盤操作場景,比如大屏展示,電視,游戲菜單等,大大簡化按鍵操作的邏輯。半自動化由于實際場景復(fù)雜多樣,過于全反而會讓業(yè)務(wù)代碼更繁雜。這一部分是對按鍵的回調(diào)回車確定。 showImg(https://segmentfault.com/img/bVbo8qV?w=683&h=176); 項目地址 https://github....
摘要:可以為服務(wù)提供者的方法設(shè)置類型提示。方法將在所有其他服務(wù)提供者均已注冊之后調(diào)用。所有服務(wù)提供者都在配置文件中注冊??梢赃x擇推遲服務(wù)提供者的注冊,直到真正需要注冊綁定時,這樣可以提供應(yīng)用程序的性能。 本文最早發(fā)布于 Rootrl的Blog 導(dǎo)言 Laravel是一款先進的現(xiàn)代化框架,里面有一些概念非常重要。在上手Laravel之前,我認為先弄懂這些概念是很有必要的。你甚至需要重溫下PHP...
摘要:多態(tài)的前提是必須有子父類關(guān)系或者類實現(xiàn)接口關(guān)系,否則無法完成多態(tài)。具體格式如下父類引用指向子類對象就是多態(tài)的定義格式。多態(tài)的轉(zhuǎn)型分為向上轉(zhuǎn)型與向下轉(zhuǎn)型兩種向上轉(zhuǎn)型當有子類對象賦值給一個父類引用時,便是向上轉(zhuǎn)型,多態(tài)本身就是向上轉(zhuǎn)型的過程。 第3天 面向?qū)ο?今日內(nèi)容介紹? 接口? 多態(tài)? 筆記本案例今日學(xué)習(xí)目標? 寫出定義接口的格式? 寫出實現(xiàn)接口的格式?...
摘要:面向?qū)ο缶幊蹋喎Q,是一種程序設(shè)計思想。面向過程與面向?qū)ο竺嫦蜻^程的程序設(shè)計把函數(shù)作為程序的基本單元。以上是在計算機世界里認識面向?qū)ο蠛兔嫦蜻^程,接下來給大家舉個生活中的例子就拿你早上想吃雞蛋灌餅為例。 面向?qū)ο缶幊獭狾bject Oriented Programming,簡稱OOP,是一種程序設(shè)計思想。OOP把對象作為程序的基本單元,一個對象包含了數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)。 面向過程 ...
摘要:最近項目里要做一個畫板,需要對鍵盤事件進行監(jiān)聽,來進行諸如撤回重做移動縮放等快捷鍵操作,因此順手實現(xiàn)了一個鍵盤事件監(jiān)聽控件,略有收獲,整理出來,希望對大家有所幫助,更希望能獲得高手的指點。 最近項目里要做一個畫板,需要對鍵盤事件進行監(jiān)聽,來進行諸如撤回、重做、移動、縮放等快捷鍵操作,因此順手實現(xiàn)了一個鍵盤事件監(jiān)聽控件,略有收獲,整理出來,希望對大家有所幫助,更希望能獲得高手的指點。 1...
閱讀 664·2021-11-15 11:39
閱讀 2901·2021-10-08 10:04
閱讀 3265·2019-08-30 10:57
閱讀 3025·2019-08-26 13:25
閱讀 1908·2019-08-26 12:14
閱讀 2636·2019-08-23 15:27
閱讀 2996·2019-08-23 15:18
閱讀 1777·2019-08-23 14:26