我有一个Backbone App,其中有一个要在其中显示youtube播放器的 View :
所以在我的 View 中,使用afterRender
-我做到了:
afterRender: function() {
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('vid', {
height: '390',
width: '640',
videoId: '',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
var done = false;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING && !done) {
setTimeout(stopVideo, 6000);
done = true;
}
}
function stopVideo() {
player.stopVideo();
}
}
但是它没有渲染任何东西,但是我也没有得到错误,并且在我的控制台中,我可以看到Youtube API已加载...所以我在这里做错了什么?
请帮忙..
最佳答案
请参阅以下相关问题:Youtube iframe api not triggering onYouTubeIframeAPIReady
我认为问题在于您的onYouTubeIframeAPIReady
函数需要全局声明,而不是嵌套在另一个函数中。 (在您的代码中,仅在afterRender
方法的范围内定义它。)
关于backbone.js - BackboneJS如何在 View 中加载Youtube Iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23491501/