【发布时间】:2012-08-12 01:59:10
【问题描述】:
我在 GreaseMonkey 脚本中使用 Ctrl+Left / Ctrl+Right 作为热键后退/前进页面。它似乎工作正常,但如果我在文本编辑区域中,我想禁用此行为。我正在尝试使用 document.activeElement 来获取页面活动元素并测试它是否是可编辑区域,但它总是返回“未定义”。
【问题讨论】:
标签: firefox greasemonkey
我在 GreaseMonkey 脚本中使用 Ctrl+Left / Ctrl+Right 作为热键后退/前进页面。它似乎工作正常,但如果我在文本编辑区域中,我想禁用此行为。我正在尝试使用 document.activeElement 来获取页面活动元素并测试它是否是可编辑区域,但它总是返回“未定义”。
【问题讨论】:
标签: firefox greasemonkey
document.activeElement 在 FF3 中对我有用,但以下也适用
(function() {
var myActiveElement;
document.onkeypress = function(event) {
if ((myActiveElement || document.activeElement || {}).tagName != 'INPUT')
// do your magic
};
if (!document.activeElement) {
var elements = document.getElementsByTagName('input');
for(var i=0; i<elements.length; i++) {
elements[i].addEventListener('focus',function() {
myActiveElement = this;
},false);
elements[i].addEventListener('blur',function() {
myActiveElement = null;
},false);
}
}
})();
【讨论】:
element.activeElement 是 HTML5 规范的一部分,但大多数浏览器不支持。它首先由 IE 引入。
【讨论】: