Javascript 使用loadVideoById()函数自动播放youtube视频不起作用
我使用onyoutubeiframeapiredy()和loadVideoById()为自定义youtube播放器创建了一个小部件,它可以显示大量视频并单击打开视频并自动播放。作为独立的小部件,一切都可以正常工作。但只要我在iframe中使用这个小部件在其他页面上调用它,autoplay就不起作用了。我不知道这是怎么回事。下面是相同的示例代码Javascript 使用loadVideoById()函数自动播放youtube视频不起作用,javascript,iframe,youtube-api,youtube-iframe-api,Javascript,Iframe,Youtube Api,Youtube Iframe Api,我使用onyoutubeiframeapiredy()和loadVideoById()为自定义youtube播放器创建了一个小部件,它可以显示大量视频并单击打开视频并自动播放。作为独立的小部件,一切都可以正常工作。但只要我在iframe中使用这个小部件在其他页面上调用它,autoplay就不起作用了。我不知道这是怎么回事。下面是相同的示例代码 var youtube_Ids=[“N71Nd KLUSo”、“c35LK3qXJ5Q”、“Q8aFElBusk4”、“Kq7vz3Ju_a0”、“8sZ
var youtube_Ids=[“N71Nd KLUSo”、“c35LK3qXJ5Q”、“Q8aFElBusk4”、“Kq7vz3Ju_a0”、“8sZ5maCXsh0”、“XI1FcgCDoZk”、“AYQYZEXCQ”、“GGhTL8u-2IY”、“RKMFNIC4_bM”、“41Sx2Izve4”、“Lfjo5LFse__8”、“Fi13t258FkA”、“LB334U4”、“McEFfJCBqA”、“KKKKDI-4RI”、“WE”、“CBU3DZU”、“KHF2ZVZU”、“J7CFU”]、“Tf8FKJKKJKJKKKKKKKKKJ7FKU”]代码>
tag.src=”https://www.youtube.com/iframe_api";
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
var播放器;
函数onyoutubeiframeapiredy(){
player=新的YT.player('player'{
videoId:youtube_-id[0],/“N71Nd-KLUSo”,
PlayerBars:{“自动播放”:1,},
活动:{
“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}
函数onPlayerReady(事件){
log('started');
}
函数onPlayerStateChange(事件){
如果(event.data==0){
console.log('done');
}
}
$(文档)。在(“单击”,“视频链接”,功能(e){
e、 预防默认值();
var videoID=$(this.attr('data-videoID');
player.loadVideoById(videoID);
});
如果我把它作为独立的小部件使用,效果很好。但只要将其用作另一个iframe的源,它就可以正常工作,只需单击特定视频,它不会自动播放,并且需要一个以上的用户操作来播放视频-
已尝试使用player.playVideo/event.target.playVideo()-内部onPlayerReady函数,但未成功。任何形式的帮助都将被感谢,因为我是iframes和youtube API的新手。
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('player', {
videoId: youtube_Ids[0], //'N71Nd-KLUSo',
playerVars: { 'autoplay': 1,},
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
console.log('started');
}
function onPlayerStateChange(event) {
if(event.data === 0) {
console.log('done');
}
}
$( document ).on( "click", ".video-link", function(e) {
e.preventDefault();
var videoID = $(this).attr('data-videoID');
player.loadVideoById(videoID);
});
Works fine if i use this as independent widget. But as soon as use it as source for another iframe, it works fine except on clicking of a specific video, it doesnt autoplay and requires one more user action to play the video -
<iframe id="iframe1" scrolling="no" style="width:100%;border:none;height:100%;" src="http://example.com/youtubeplayer"></iframe>
Have tried using player.playVideo / event.target.playVideo() - inside onPlayerReady function with no success. Any Sort of help will be appreciated, as i am a newbie in iframes & this youtube APIs.