我想在将函数绑定到事件之前检查事件是否可用。
问题是 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 上的示例
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)