Youtube 嵌入 iframe - 事件不在本地触发 [英] Youtube Embed Iframe - Events Not Firing In Local
本文介绍了Youtube 嵌入 iframe - 事件不在本地触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我刚刚注意到,当我在本地测试时,Youtube 事件(onReady、onStateChange)不再触发,但是当我将代码上传到 JsFiddle.我决定从 Youtube Player API 复制并粘贴代码,我可以在其中验证它确实不起作用.还有其他人有这个问题吗?此问题发生在 Chrome、Firefox、IE、Safari 和 Opera 上.
EDIT - 当我 console.log(player);
在本地时,我发现它缺少很多 Youtube 功能,例如 seekTo()
、setVolume()
, showVideoInfo()
存在于 JsFiddle 中.我不确定为什么会这样,但我相信这可能是我问题的根源.有什么想法吗?
<身体><!-- 1. <iframe>(和视频播放器)将替换这个 <div>标签.--><div id="玩家"></div><脚本>//2. 此代码异步加载 IFrame Player API 代码.var tag = document.createElement('script');tag.src = "https://www.youtube.com/iframe_api";var firstScriptTag = document.getElementsByTagName('script')[0];firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);//3. 这个函数创建一个<iframe>(和 YouTube 播放器)//API 代码下载后.var 播放器;函数 onYouTubeIframeAPIReady() {player = new YT.Player('玩家', {高度:'190',宽度:'140',视频 ID:'M7lc1UVf-VE',事件:{'onReady': onPlayerReady,'onStateChange': onPlayerStateChange}});}//4. 当视频播放器准备就绪时,API 将调用此函数.函数 onPlayerReady(事件){console.log('准备好');event.target.playVideo();}//5. API 在玩家状态改变时调用该函数.//该函数表示在播放视频时(state=1),//玩家应该播放六秒钟然后停止.变量完成 = 假;函数 onPlayerStateChange(event) {console.log('更改');if (event.data == YT.PlayerState.PLAYING && !done) {设置超时(停止视频,6000);完成 = 真;}}功能停止视频(){player.stopVideo();}