国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

面向鍵盤操作的半自動(dòng)化解決方案

CloudwiseAPM / 1321人閱讀

摘要:項(xiàng)目地址概要這是一個(gè)半自動(dòng)化的鍵盤訪問解決方案,主要適用于需要完全鍵盤操作場(chǎng)景,比如大屏展示,電視,游戲菜單等,大大簡(jiǎn)化按鍵操作的邏輯。半自動(dòng)化由于實(shí)際場(chǎng)景復(fù)雜多樣,過于全反而會(huì)讓業(yè)務(wù)代碼更繁雜。這一部分是對(duì)按鍵的回調(diào)回車確定。

項(xiàng)目地址 https://github.com/XboxYan/auto-keyboard

概要

這是一個(gè)半自動(dòng)化的鍵盤訪問解決方案,主要適用于需要完全鍵盤操作場(chǎng)景,比如大屏展示,電視,游戲菜單等,大大簡(jiǎn)化按鍵操作的邏輯。

焦點(diǎn)使用虛擬焦點(diǎn),也就是通過添加.focus等class實(shí)現(xiàn),而不是原生自帶的:focus,更利于定制化需求。

基于HTML頁(yè)面。

比較冷門,鍵盤交互方向,不感興趣的可以跳過。
半自動(dòng)化

由于實(shí)際場(chǎng)景復(fù)雜多樣,過于全反而會(huì)讓業(yè)務(wù)代碼更繁雜。

該功能插件僅針對(duì)于局部實(shí)現(xiàn)自動(dòng)化操作,整體頁(yè)面布局仍需開發(fā)者手動(dòng)協(xié)調(diào)。

具體是指開發(fā)者需要手動(dòng)講頁(yè)面分為幾塊邏輯區(qū)域,比如下方的鍵盤區(qū)和搜索列表區(qū)。

然后對(duì)每塊區(qū)域分別調(diào)用new View()即可

A B ...
  • 人類DNA密碼破譯

  • ...
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)自動(dòng)適配了。

API

通過new View(#container)適配的區(qū)域,可獲焦元素可以是常見的n*m分布,也可以是絕對(duì)定位的任意布局。

通過V.init(children)來初始化可獲焦子元素,傳入nodeList即可,與頁(yè)面層級(jí)無關(guān)。

new View(container)

核心方法。創(chuàng)建一個(gè)區(qū)域,傳入?yún)?shù)為頁(yè)面的一個(gè)容器。

var con = document.getElemetById("con");
var V = new View(con);
V.init(nodeList)

初始化,傳入?yún)?shù)為需要獲焦的子元素,通常使用getElementsByTagName來一次性傳入多個(gè)。

該方法需要等待頁(yè)面加載完全后使用,也就是說當(dāng)動(dòng)態(tài)加載網(wǎng)絡(luò)數(shù)據(jù)時(shí),需等待只元素加入容器之后調(diào)用

V.init(S.getElementsByTagName("a"));

//動(dòng)態(tài)數(shù)據(jù)
ajax({
    url:"XXX",
    sunccess:function(data){
        var html = "";
        for(var i=0;i";
        }
        S.innerHTML = html;
        V.init(S.getElementsByTagName("a"));
    }
})

可以傳空。此時(shí)表示該區(qū)域里面沒有可獲焦元素,常見場(chǎng)景為新聞?lì)?,此時(shí)該區(qū)域可以自動(dòng)實(shí)現(xiàn)上下瀏覽的功能。

V.insertAfter(nodeList)

向后追加子元素。常見場(chǎng)景為上拉加載,追加下一頁(yè)等功能。

ajax({
    url:"XXX",
    sunccess:function(data){
        var html = "";
        for(var i=0;i";
        }
        M.innerHTML = html;
        V.insertAfter(M.getElementsByTagName("a"));
    }
})
V.insertBefore(nodeList)

insertAfter相反,向前追加子元素。

V.onfocus()

主動(dòng)聚焦,當(dāng)有多個(gè)區(qū)域時(shí),可選擇控制。

var V = new View(S);
V.onfocus();
Calback

這一部分是對(duì)按鍵的回調(diào)

V.ok

回車、確定。

Vi.ok = function(item){
    console.log(item)//當(dāng)前獲焦元素的dom節(jié)點(diǎn)
}

當(dāng)按下確定時(shí),會(huì)給當(dāng)前獲焦元素添加pressIn類,抬起時(shí)移除,可自定義按下效果。

V.left、V.right、V.up、V.down

向左/右/上/下(處于邊界時(shí))。當(dāng)獲焦元素處于區(qū)域邊界時(shí)觸發(fā)。一般用于跨越區(qū)域。

Vl.left = function(){
    V.onfocus();//此時(shí)Vl會(huì)自動(dòng)失去焦點(diǎn),V會(huì)主動(dòng)獲焦
}

當(dāng)處于邊界時(shí),如果沒有指定觸發(fā)回調(diào),比如V.left,會(huì)給當(dāng)前獲焦元素添加shake類,這是一個(gè)顫抖動(dòng)畫,300ms自動(dòng)移除。

V.back

返回。當(dāng)按返回鍵時(shí)觸發(fā)。

V.move

移動(dòng)時(shí)觸發(fā),回調(diào)參數(shù)為移動(dòng)之前的元素,和移動(dòng)之后的元素。

V.move = function (prev, current) {
    //prev移動(dòng)之前
    //current移動(dòng)之前后
}
props V.saveCurrent

是否保留當(dāng)前狀態(tài),類名為current。一般用作tab切換時(shí)跟隨。默認(rèn)為false。

V.saveCurrentDelay

是否保留當(dāng)前狀態(tài),類名為current。一般用作tab切換時(shí)跟隨,但是需要點(diǎn)擊ok觸發(fā)。默認(rèn)為false

V.scrollAnimate

是否啟用滾動(dòng)動(dòng)畫。該功能使用smoothscroll.js完成,如果不支持該插件,可禁用滾動(dòng)動(dòng)畫。

案例

https://web.codelabo.cn/auto-keyboard/

請(qǐng)使用鍵盤方向鍵上下左右體驗(yàn)

可以查看源碼,代碼量很小
結(jié)語(yǔ)

目前市面上并沒有什么對(duì)鍵盤操作封裝的庫(kù),鍵盤什么的這個(gè)方向確實(shí)比較窄,或者說比較冷門,希望能夠幫助特定的人群吧。

有這方面興趣的歡迎交流,一起討論。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/53762.html

相關(guān)文章

  • 面向鍵盤操作自動(dòng)解決方案

    摘要:項(xiàng)目地址概要這是一個(gè)半自動(dòng)化的鍵盤訪問解決方案,主要適用于需要完全鍵盤操作場(chǎng)景,比如大屏展示,電視,游戲菜單等,大大簡(jiǎn)化按鍵操作的邏輯。半自動(dòng)化由于實(shí)際場(chǎng)景復(fù)雜多樣,過于全反而會(huì)讓業(yè)務(wù)代碼更繁雜。這一部分是對(duì)按鍵的回調(diào)回車確定。 showImg(https://segmentfault.com/img/bVbo8qV?w=683&h=176); 項(xiàng)目地址 https://github....

    baukh789 評(píng)論0 收藏0
  • Laravel中核心概念

    摘要:可以為服務(wù)提供者的方法設(shè)置類型提示。方法將在所有其他服務(wù)提供者均已注冊(cè)之后調(diào)用。所有服務(wù)提供者都在配置文件中注冊(cè)??梢赃x擇推遲服務(wù)提供者的注冊(cè),直到真正需要注冊(cè)綁定時(shí),這樣可以提供應(yīng)用程序的性能。 本文最早發(fā)布于 Rootrl的Blog 導(dǎo)言 Laravel是一款先進(jìn)的現(xiàn)代化框架,里面有一些概念非常重要。在上手Laravel之前,我認(rèn)為先弄懂這些概念是很有必要的。你甚至需要重溫下PHP...

    ddongjian0000 評(píng)論0 收藏0
  • 面向對(duì)象接口多態(tài)

    摘要:多態(tài)的前提是必須有子父類關(guān)系或者類實(shí)現(xiàn)接口關(guān)系,否則無法完成多態(tài)。具體格式如下父類引用指向子類對(duì)象就是多態(tài)的定義格式。多態(tài)的轉(zhuǎn)型分為向上轉(zhuǎn)型與向下轉(zhuǎn)型兩種向上轉(zhuǎn)型當(dāng)有子類對(duì)象賦值給一個(gè)父類引用時(shí),便是向上轉(zhuǎn)型,多態(tài)本身就是向上轉(zhuǎn)型的過程。 第3天 面向?qū)ο?今日內(nèi)容介紹? 接口? 多態(tài)? 筆記本案例今日學(xué)習(xí)目標(biāo)? 寫出定義接口的格式? 寫出實(shí)現(xiàn)接口的格式?...

    wangdai 評(píng)論0 收藏0
  • Python理解面向對(duì)象

    摘要:面向?qū)ο缶幊?,?jiǎn)稱,是一種程序設(shè)計(jì)思想。面向過程與面向?qū)ο竺嫦蜻^程的程序設(shè)計(jì)把函數(shù)作為程序的基本單元。以上是在計(jì)算機(jī)世界里認(rèn)識(shí)面向?qū)ο蠛兔嫦蜻^程,接下來給大家舉個(gè)生活中的例子就拿你早上想吃雞蛋灌餅為例。 面向?qū)ο缶幊獭狾bject Oriented Programming,簡(jiǎn)稱OOP,是一種程序設(shè)計(jì)思想。OOP把對(duì)象作為程序的基本單元,一個(gè)對(duì)象包含了數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)。 面向過程 ...

    hatlonely 評(píng)論0 收藏0
  • 基于 jQuery 鍵盤事件監(jiān)聽控件

    摘要:最近項(xiàng)目里要做一個(gè)畫板,需要對(duì)鍵盤事件進(jìn)行監(jiān)聽,來進(jìn)行諸如撤回重做移動(dòng)縮放等快捷鍵操作,因此順手實(shí)現(xiàn)了一個(gè)鍵盤事件監(jiān)聽控件,略有收獲,整理出來,希望對(duì)大家有所幫助,更希望能獲得高手的指點(diǎn)。 最近項(xiàng)目里要做一個(gè)畫板,需要對(duì)鍵盤事件進(jìn)行監(jiān)聽,來進(jìn)行諸如撤回、重做、移動(dòng)、縮放等快捷鍵操作,因此順手實(shí)現(xiàn)了一個(gè)鍵盤事件監(jiān)聽控件,略有收獲,整理出來,希望對(duì)大家有所幫助,更希望能獲得高手的指點(diǎn)。 1...

    付倫 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<