2012-04-20 85 views
3

我有一个嵌入的YouTube视频iframe在我的HTML,我需要停止编程,但我无法设置iframe的ID。因此,我试图通过将DOM元素传递给YT.Player构造函数而不是iframe ID来创建youtube对象,如docs中所指定的那样。我还在我的iframe src url的末尾添加了'?enablejsapi = 1'。通过传递DOM对象从HTML中的iframe创建YT.Player对象

我已经用下面的代码加载YouTube的JS API在我的js文件的顶部:

var tag = document.createElement('script'); 
tag.src = "http://www.youtube.com/player_api"; 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 
function onYouTubePlayerAPIReady(){ console.log('yt api ready'); } 

之后,我有以下代码:

$(function(){ 
    $('a.close').click(function(){ 
     var player = new YT.Player($('iframe').get(0)); 
     player.stopVideo(); 
    }); 
}) 

我得到的输出:

yt api ready 
Uncaught TypeError: Object [object Object] has no method 'stopVideo' 

我假设我搞砸了对象实例化,但我不知道如何做到这一点正确。如何在不传递构造函数iframe id的情况下创建YT.Player对象?谢谢你的帮助。

回答

3

我需要将停止视频通话移到播放器对象的准备好事件中。以下更改固定对我来说

添加了以下功能:

function onMyPlayerReady(event) { event.target.stopVideo(); } 

,改变了yt.player构造函数:

new YT.Player($('iframe').get(0), { events: { 'onReady': onMyPlayerReady } }); 
+1

任何机会,你可以发布你的完整的代码?我不确定我是否遵循了放置yt.player构造函数的位置?在点击事件? – helgatheviking 2012-05-22 16:20:13