2011-02-28 17 views
1

在Javascript中,如何檢測文檔是否在直接對焦。通過直接重點,我的意思是你在文件上,但沒有表單元素的重點。檢測文檔是直接對焦

我在這裏要做的是與Stackoverflow的所見即所得編輯器相反。當焦點位於textarea上時,按Ctrl + B時​​,Stackoverflow加粗文本。我想在用戶沒有在頁面上填寫任何表單時執行命令。例如,SHIFT + N進入我的應用程序的下一步,但仍允許在表單textareas上寫入大寫N。

我使用原型框架,BTW。

回答

1

有沒有必要跟蹤焦點,它是過於複雜的事情,並沒有通過常識氣味測試......如果你錯過了一個事件可能會出錯。

如果您觀察到頁面的根元素(documentdocument.body),那麼未明確停止的所有事件都會到達那裏,您將能夠過濾掉在表單元素上啓動的那些事件。

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

這個例子沒有過濾掉錨,但可以通過添加afindElement呼叫做容易。

0

爲什麼不使用全局JavaScript變量作爲標誌?

var isFocusedOnElement = false; 

,併爲其分配的onfocus觸發所有的文本區域,輸入框,它更改爲true onfocus,並onBlur假。

然後,只要您遇到擊鍵,就可以檢查此標誌。