如何将函数添加到 api_addEventListener 到带有参数的 Vimeo 播放器
Posted
技术标签:
【中文标题】如何将函数添加到 api_addEventListener 到带有参数的 Vimeo 播放器【英文标题】:How can I add a function to api_addEventListener to a Vimeo player with arguments 【发布时间】:2014-10-21 22:23:39 【问题描述】:我正在创建一个脚本,该脚本使用 swfobject 在同一页面上创建和播放 YouTube 和 Vimeo 的多个视频。该脚本在页面上创建一个控制器,允许用户播放、暂停、停止等。我已经成功在同一页面上创建了 YouTube 播放器和 Vimeo 播放器,并通过控制器上的按钮控制播放器。
我正在堆叠的是将 api_addEventListener 添加到播放器。正如我在以下问题中回答的那样,我成功地将 api_addEventListener 添加到从 Vimeo 播放器触发的事件中并执行其回调函数。 (How do I add an event listener?)
但是,我无法弄清楚向 api_addEventListener 中的函数添加参数的方法。根据此页面 (http://developer.vimeo.com/player/js-api),如果我没有弄错,Vimeo 的所有事件都会返回 player_id 和事件,但永远不会返回。 这对于在当前播放器完成播放时播放下一个播放器、在播放器播放视频时停止其他播放器等是必需的。
function vimeo_player_loaded(id)
var vimeo_player = document.getElementById(id);
vimeo_player.api_addEventListener('play', vimeo_play(id, eventName));
vimeo_player.api_addEventListener('pause', vimeo_pause(id, eventName));
vimeo_player.api_addEventListener('finish', vimeo_finish(id, eventName));
function vimeo_play(id, eventName)
console.log("Video is playing. id : " + id + " event: " + eventName);
function vimeo_pause(id, eventName)
console.log('Video is paused. id :' + id + " event: " + eventName);
function vimeo_finish(id, eventName)
console.log('Video finished. id :' + id + " event: " + eventName);
英语不是我的第一语言。有不明白的地方见谅。
PS;除非有必要,否则我会尽量不使用任何库。
【问题讨论】:
请注意,侦听器需要一个函数,而不是函数返回的任何内容,在这种情况下为undefined
【参考方案1】:
监听器需要一个函数,但你不是在传递一个函数,而是在执行它。你有几个选择,一个是让你的函数返回另一个需要事件参数的函数:
function vimeo_play(id)
return function(eventName)
console.log("Video is playing. id : " + id + " event: " + eventName);
您可以使用 id
调用该函数,这将返回侦听器期望的函数:
vimeo_player.api_addEventListener('play', vimeo_play(id));
// same with the others
另一种选择是保留您的函数,并使用bind
部分应用id
参数,这样您将获得一个等待事件的函数:
vimeo_player.api_addEventListener('play', vimeo_play.bind(null, id));
// same with the others
请记住,函数是对象,当您使用 ()
时,您实际上是在调用函数,而不是传递它。
【讨论】:
我得到了你所指出的关于 addEventListener 的内容。但是,代码没有按我的目标工作。第一个是在 vimeo_player_loaded(id) 甚至 Vimeo 播放器没有“播放”时执行其回调函数。第二个根本不起作用。我认为问题潜伏在 Vimeo 的 api 周围。以上是关于如何将函数添加到 api_addEventListener 到带有参数的 Vimeo 播放器的主要内容,如果未能解决你的问题,请参考以下文章
如何将redshift jdbc驱动程序添加到aws lambda函数
如何将 useUnifiedtopology 属性添加到 MongoClient 构造函数
如何将自定义按钮添加到调用 JavaScript 函数的工具栏?