我有一个骨干应用程序,我有一个视图,我想在其中显示一个youtube播放器:
所以在我看来,在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未触发onYouTubeIframeAPIReady
我认为问题是你的onYouTubeIframeAPIReady
函数需要全局声明,而不是嵌套在另一个函数中。(在您的代码中,它仅在afterRender
方法的范围内定义)
通过改变
function onYouTubeIframeAPIReady() {
// ...
}
到
window.onYouTubeIframeAPIReady = function() {
// ...
}
它现在工作!这里发现线索Youtube iframe api没有触发onYouTubeIframeAPIReady