- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1-8-键盘导航
键盘导航控制鼠标指针来得快;二、用不了鼠标,可用性。
为了演示键盘完全控制,我们修改复杂布局的例子,并且增加“快捷键”,使得人们操作起来更快速流畅。
学习完这篇教程后,相信大家不但会懂得键盘导航的基本所需知识,而且还能够学习,如何利用KeyNav,KeyMap和FocusManager这几个类来联合实现键盘导航。
入门
例 complex.html 和 complex.js 文件。记得还要一份ExtJS4在同一目录底下,而且记住要改名为“ext”。
焦点管理器
焦点管理器提供键盘导航功能。只是一句如下:
Ext.FocusManager.enable(true);
在Ext.onReady里调用即可传入一个true的布尔值表示要在表单的焦点区域显示聚焦框很快看出焦点在哪里。用户按下回车键可以进入应用程序,然后出入不同“层面”,按下回车表示下一步的层面,Esc 键表示返回上一层面。按下 Tab 键可以在处于同一水平相邻的几个元素之间来回切换。
纯粹的元素周围导航用 FocusManager 来做。但你可能会发现,某些无法访问(如 Grid),或在屏幕上得到相当繁琐。要解决这个我们采用“快捷方式”,这将允许用户在应用程序某些面板中作的轻松跳转。
是否要为面板而设置快捷键,看看是否满足以下的条件:
用得频率高不高?
作为一个锚吗?操作是否符合直觉?
如果答对了里面其中一项,都表示你可以替你的最终用户添加上命令的快捷方式。
KeyNav
KeyNav 所负责的职责就是提供“导航键”部分的按键。所谓“导航键”,罗列如下:
Enter Space Escape Tab
Left Right Up Down
Page Up Page Down Home EndDelete Backspace
不过请谨记,部分用户上的机子,却是没有某些键的,例如,苹果机用户便没有Page Up、Page Down、Del、Home或End键。var nav = Ext.create(Ext.util.KeyNav, my-element, {
left : function(e){this.moveLeft(e.ctrlKey);},
right : function(e){this.moveRight(e.ctrlKey);},
enter : function(e){this.save();},
scope : this
});
KeyNav 可以说为方向键而设的,于是我们把例子中本来用 tab、回车、esc 键控制的命令(切换不同的面板),转换为方向键控制的。var nav = Ext.create(Ext.util.KeyNav, Ext.getBody(), {
left : function(){
var el = Ext.FocusManager.focusedCmp;
if (el.previousSibling()) el.previousSibling().focus();
},
right : function(){
var el = Ext.FocusManager.focusedCmp;
if (el.nextSibling()) el.nextSibling().focus();
},
up : function() {
var el = Ext.FocusManager.focusedCmp;
if (el.up()) el.up().focus();
},
down : function() {
var el = Ext.FocusManager.focusedCmp;
if (el.items) el.items.items[0].focus();
},
scope : this
});
当前我们通过 focusedCmp 来聚焦组件。这样,我们的应用程序就能更方便的控制起来了。下面我们进入键盘图部分,看看如何增加特殊功能的键。
KeyMap
KeyMap对象元素,闭合的区域展开。var map = Ext.create(Ext.util.KeyMap, my-element, {
key: 13, // or Ext.EventObject.ENTER
ctrl: true, shift: false,
fn: myHandler, scope: myObject
});
第一个配置项属性key是键对应的数值。下面两个配置项ctrl和shift,分别表示
文档评论(0)