我需要停止一个使用新oembed api(通用播放器)嵌入的Vimeo视频,但是当我尝试添加事件时,我会得到以下错误:
Uncaught TypeError: Object #<an HTMLIFrameElement> has no method 'addEvent'
但是我不知道为什么会出现这个错误,我已经添加了jQuery和frogaloop API,也给iframe添加了id,但它仍然无法工作 :(
完整的代码在这里: http://tv.bisaccia.info
我需要停止一个使用新oembed api(通用播放器)嵌入的Vimeo视频,但是当我尝试添加事件时,我会得到以下错误:
Uncaught TypeError: Object #<an HTMLIFrameElement> has no method 'addEvent'
Eli,请编辑您的帖子。正如Joe所说,您的信息是部分错误的。虽然postMessage用于跨域通信,但它是通过调用“Froogaloop.init();”添加的DOM方法来实现的。
is_embed_iframe = _this.iframe_pattern.test(cur_frame.getAttribute('src'));
if (is_embed_iframe) {
cur_frame.api = _that.api;
cur_frame.get = _that.get;
cur_frame.addEvent = _that.addEvent;
}
Froogaloop.init();
让控制 API 生效。在我的情况下:
<iframe id="player_1" src="http://player.vimeo.com/video/26859570?js_api=1&js_swf_id=player_1&title=0&byline=0&portrait=0" width="620" height="354" frameborder="0"></iframe>
<script>
$(document).ready(function() {
Froogaloop.init();
$("#player_1").moogaloop({
load: function(element) {
$("#segment1").click(function() { element.moogaloop('seekTo', "7"); });
}
});
});
</script>
这不是正确的答案,但可能适用于您的情况,就像对我有帮助一样。我只是想在关闭包含它的DOM元素时停止播放我的Vimeo视频。我折叠了其容器,这使其在视觉上隐藏,但音频继续播放并且浏览器资源被不必要地占用。
现在我所做的是简单地将iframe存储在变量中,从DOM中删除它,然后立即替换它。我尚未跨浏览器测试,仅限于Chrome和Safari Mobile的最新版本。
var container = $("#VimeoContainer");
var iframe = container.find("iframe");
iframe.remove();
container.append(iframe);
再次强调,Froogaloop确实是最好的选择,但我过去曾遇到过一些问题,所以在这种情况下,我正在寻找一些简单的东西。显然,您可以使用相同的结果而不使用JQuery来完成此操作。
不行。
addEvent
方法。如果你想通过 JavaScript 与 Vimeo 进行交互,你需要让他们实现一个也接受你的域名的 postMessage
API。