Javascript - 检测是否支持事件列表器

Ben*_*ing 14 javascript browser-detection event-handling javascript-events detection

是否可以检测某些浏览器是否支持某些事件?我可以检测浏览器是否支持document.addEventListener,但我需要知道它是否支持DOMAttrModified事件.Firefox和Opera支持它,但Chrome和其他人不支持.

谢谢,如果有人可以帮助!

T.J*_*der 15

更新的答案:

是的,您可以对此进行功能检测.创建元素,侦听事件并更改元素的属性.在我的测试中,您甚至不必将元素添加到DOM树中,这使得它成为一个很好的,包含的特征检测.

例:

function isDOMAttrModifiedSupported() {
    var p, flag;

    flag = false;
    p = document.createElement('p');
    if (p.addEventListener) {
        p.addEventListener('DOMAttrModified', callback, false);
    }
    else if (p.attachEvent) {
        p.attachEvent('onDOMAttrModified', callback);
    }
    else {
        // Assume not
        return false;
    }
    p.setAttribute('id', 'target');
    return flag;

    function callback() {
        flag = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

实时复制

Firefox触发上述所有修改的回调; 没有Chrome浏览器.


原始答案:

您可以使用功能检测某些事件是否受支持,如此便捷页面所示.我不知道你是否可以专门针对那个进行测试,但如果可以的话,那些代码可能会让你开始.

更新:我将Kangax的代码转储到JSBin并尝试了它,看起来并不像那个嗅探技术适用于该事件(除非我的名字拼写错误或其他东西; Firefox显示"假").但我的技术确实如此.