[英]How to check if an event handler exist using jQuery or JS?
我想在将功能绑定到事件之前检查事件是否可用。 问题是Google Chrome支持在Video元素中支持事件“ loadedmetadata”,而FireFox不支持。
我做了以下
$('video').bind('loadedmetadata', videoloaded);
videoloaded();
它在Firefox中运行良好,但是当我在Chrome中尝试时,该函数执行了两次(这是合乎逻辑的)。 我想检查是否存在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上的完整工作示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.