在编辑时如何在GreaseMonkey中禁用热键?

时间:2020-03-05 18:47:21  来源:igfitidea点击:

我在GreaseMonkey脚本中使用Ctrl + Left / Ctrl + Right作为热键来回退/前进页面。看来工作正常,但是如果我在文本编辑区域中,则想禁用此行为。我正在尝试使用document.activeElement获取页面活动元素并测试它是否为可编辑区域,但它始终返回"未定义"。

解决方案

回答

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引入的。