如何使用jQuery或JS检查事件处理程序是否存在?
我想在将函数绑定到它之前检查事件是否可用。 问题是Google Chrome支持Video元素中的“loadedmetadata”事件,而FireFox则不支持。
我做了以下
$('video').bind('loadedmetadata', videoloaded); videoloaded();
它在Firefox中运行良好但是当我在Chrome中尝试时,该function执行了两次(这是合乎逻辑的)。 我想检查是否存在loadedmetadata
事件处理程序,以便在每个浏览器中只运行一次该函数。
如果不存在这种可能性,任何明智的工作都可以解决这个问题?
如果此对象包含您的事件,请检查$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 }
关于jsFiddle的完整工作示例