我觉得我理解focus()
:
input
,只要文档准备好,它就“正常工作”。 div
,您必须添加tabindex
属性。tabindex
将按Tab键添加到按优先顺序排列的元素(数字越大越好),0
及以上。但是,有一个特殊值-1
,它会从Tab键顺序中明确删除该元素。focus
时,请在setTimeout
。非常简单,真的,对吗?但不是。它对我不起作用。
我的具体用例是我有一个启用了键导航的小部件,如果你点击右键,会打开一个弹出式模态小部件。它很棒。但我不能让那个模态小部件成为焦点。那个没有表单输入的模态小部件(只是一些文本和一个关闭链接)。我已将keydown / up / press事件添加到模态窗口小部件中,我已将tabindex
添加到各个节点并尝试将其聚焦,但原始窗口小部件仍会获取键盘事件。
DOM方面,模态小部件,尽管在keynav小部件中是new
,但是在body
级别附加到DOM,所以它不像键盘事件冒泡通过我的模态对话框应该是stopPropagation
'd,它永远不会得到那些事件。
这意味着如果在点击模态小部件之前点击另一个键,它会在第一个模态对话框下面打开另一个模态对话框!
我真的希望我忽略了关注div
s的一些事情,因为我有几个我想要实现的功能因为(我相信)焦点请求被忽略而无法正常工作
帮助!我错过了什么?
答案 0 :(得分:0)
在特定情况下,我正在调查,我实际上有一个错字。
我这样做了,这不起作用:
setTimeout(lang.hitch(this, this.domNode.focus), 100);
但这有效:
setTimeout(function() { this.domNode.focus() }, 100);
那就是说,focus
我遇到了很多问题,经常让我害怕以编程方式使用它。
希望,问题中的提示列表对某人有帮助。