簡體   English   中英

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

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM