代码之家  ›  专栏  ›  技术社区  ›  Omar Abid

如何使用jQuery或JS检查事件处理程序是否存在?

  •  5
  • Omar Abid  · 技术社区  · 16 年前

    问题是Google Chrome支持Video元素中的“loadedmetadata”事件,而FireFox不支持。

    我做了如下的事情

    $('video').bind('loadedmetadata', videoloaded);
    videoloaded();
    

    它在Firefox中运行得很好,但是当我在Chrome中尝试时,这个函数被执行了两次(这是合乎逻辑的)。我想看看 loadedmetadata

    如果这种可能性不存在,有什么聪明的办法可以解决这个问题吗?

    1 回复  |  直到 16 年前
        1
  •  5
  •   BrunoLM    16 年前

    $video.data("events") 如果此对象包含您的事件,因为您正在使用 .bind 此元素的所有事件都将存储在此对象中。

    var $video = $("#video");
    var $ve = $video.data("events");
    
    // checking if a `loadedmetadata` object exists in `data("events")`
    if ($ve != null && typeof($ve.loadedmetadata) !== undefined)
    {
        // has loadedmetadata event
    }
    

    example on jsFiddle