[英]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.