在Javascript中,如何检测文档是否在直接对焦。通过直接重点,我的意思是你在文件上,但没有表单元素的重点。检测文档是直接对焦
我在这里要做的是与Stackoverflow的所见即所得编辑器相反。当焦点位于textarea上时,按Ctrl + B时,Stackoverflow加粗文本。我想在用户没有在页面上填写任何表单时执行命令。例如,SHIFT + N进入我的应用程序的下一步,但仍允许在表单textareas上写入大写N。
我使用原型框架,BTW。
在Javascript中,如何检测文档是否在直接对焦。通过直接重点,我的意思是你在文件上,但没有表单元素的重点。检测文档是直接对焦
我在这里要做的是与Stackoverflow的所见即所得编辑器相反。当焦点位于textarea上时,按Ctrl + B时,Stackoverflow加粗文本。我想在用户没有在页面上填写任何表单时执行命令。例如,SHIFT + N进入我的应用程序的下一步,但仍允许在表单textareas上写入大写N。
我使用原型框架,BTW。
有没有必要跟踪焦点,它是过于复杂的事情,并没有通过常识气味测试......如果你错过了一个事件可能会出错。
如果您观察到页面的根元素(document
或document.body
),那么未明确停止的所有事件都会到达那里,您将能够过滤掉在表单元素上启动的那些事件。
document.observe('keypress', function(event, element) {
if (event.findElement('input, select, textarea') == document) {
// No input was typed on.
}
});
这个例子没有过滤掉锚,但可以通过添加a
到findElement
呼叫做容易。
为什么不使用全局JavaScript变量作为标志?
var isFocusedOnElement = false;
,并为其分配的onfocus触发所有的文本区域,输入框,它更改为true onfocus
,并onBlur
假。
然后,只要您遇到击键,就可以检查此标志。