Javascript中是否有方法确定是否没有元素处于焦点?
我正在将一些热键构建到我的HTML页面中:Javascript中是否有方法确定是否没有元素处于焦点?,javascript,Javascript,我正在将一些热键构建到我的HTML页面中: $(document).bind('keypress', function (e) { var event = (e.keyCode ? e.keyCode : e.which); if (event == LETTER_P) { // go to another page } } 但问题是,如果他们在页面上输入文本(在文本框元素中,等等)并点击字母“p”,他们就
$(document).bind('keypress', function (e) {
var event = (e.keyCode ? e.keyCode : e.which);
if (event == LETTER_P) {
// go to another page
}
}
但问题是,如果他们在页面上输入文本(在文本框元素中,等等)并点击字母“p”,他们就会转到另一个页面。我只希望重定向在它们不在任何元素中时发生。您可以在jQuery中使用
:focus
选择器
if ( $( "input:focus, textarea:focus" ).length ) {
// there is a focused element
}
document.activeElement
现在受到所有主流浏览器的支持。如果焦点中没有元素,则activeElement
将返回文档正文,因此:
if (document.activeElement === document.body) {
// Nothing is in focus
}
您可以尝试以下方法:
$(document).bind('keypress', function (e) {
var event = (e.keyCode ? e.keyCode : e.which);
if (event == LETTER_P && document.activeElement.tagName == "input") {
// go to another page
}
}
我添加到您的代码中不需要任何库。哦,是的,我可以用任何方式添加。这个调用有多“重”?这是解析整个DOM还是有一种更快的方法?它解析整个DOM,但您可以通过将其更改为
$(“输入:焦点,文本区域:焦点”)
使其更快,因此它只检查输入和文本区域。我喜欢此检查,我可以将所有键检查包装在其中以确保。谢谢
if ( $('input:focus, select:focus').length){
// there is a focused element which would respond to a keypress
}