检测文档是直接关注的

时间:2011-02-28 22:08:38

标签: javascript prototypejs

在Javascript中,如何检测文档是否在直接焦点中。通过直接焦点,我的意思是你在文档上,但没有任何表单元素。

我在这里要做的是与Stackoverflow的WYSIWYG编辑器相反。当焦点位于textarea上时,当您按CTRL + B时​​,Stackoverflow会将文本加粗。我想在用户未填写页面上的任何表单时执行命令。例如,SHIFT + N进入我的应用程序的下一步,但仍允许在表单textareas上写入大写字母N。

我使用Prototype框架,BTW。

2 个答案:

答案 0 :(得分:1)

没有必要跟踪焦点,它是过于复杂的事情,并没有通过常识气味测试...如果你错过了一个事件,可能会出错。

如果您观察到网页的根元素(documentdocument.body),那么所有未明确停止的事件都会到达那里,您将能够过滤掉那些开始的事件表单元素。

document.observe('keypress', function(event, element) {
    if (event.findElement('input, select, textarea') == document) {
        // No input was typed on.
    }
});

此示例不会过滤出锚点,但可以通过将a添加到findElement来轻松完成。

答案 1 :(得分:0)

为什么不使用全局javascript变量作为标志?

var isFocusedOnElement = false;

将onfocus触发器分配给所有文本区域,输入框将其更改为true onfocus,并将onBlur更改为false。

然后,只要遇到击键,就可以检查此标志。