javascript - 检测是否支持事件监听器

标签 javascript event-handling dom-events detection browser-detection

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

最佳答案

更新的答案:

,您可以对此进行特征检测。创建一个元素,监听事件,并更改元素的属性。在我的测试中,您甚至不必将元素添加到 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;
    }
}

Live copy

Firefox 触发对上述所有修改的回调; Chrome 都没有。


原始答案:

您可以通过功能检测是否支持某些 事件,如this handy page 所示.我不知道您是否可以专门针对那个进行测试,但如果可以的话,该代码很可能会让您入门。

更新:我dumped Kangax's code into JSBin并尝试了一下,看起来嗅探技术并不适用于该事件(除非我的名字拼写错误或其他原因;Firefox 显示“false”)。但我上面的技术确实如此。

关于javascript - 检测是否支持事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4562354/

相关文章:

javascript - FullCalendar,如何更改日期格式?

javascript - 无法使用 meteor 表单中的动态数组 id 更新 mongo 值

javascript - 如何制作响应式文本

javascript - 仅当先前的事件处理完成时才运行事件处理程序

delphi - 如何将代码动态注入(inject)到 Delphi 中的事件处理程序中?

javascript - 在嵌套的div jquery中按类查找id

javascript - 只执行一个 Angular 运行 block

javascript - 捕获链接点击(事件冒泡)

javascript - window.open() 在 react 应用程序中不起作用

javascript - 停止将某个类应用于事件目标的父级