在Opera浏览器下,onYouTubePlayerAPIReady无法触发

3

嵌入的Youtube视频在Opera浏览器上无法显示。

显然是回调函数在YT API库被加载之后才被定义,但没有找到任何解决方法。

目前页面通过/player_api js引入来加载YT API,只有Firefox可以工作。

尝试通过以下方式加载YT API:

<script type="text/javascript">
var tag = document.createElement('script');
tag.src = "//www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
<script>

但在这种情况下,该页面在Opera和Firefox上都无法工作。
有问题的页面是: http://www.ionpoverty.tv/blog/featured/having-it-all-low-income-women-and-work-inequality/
1个回答

2
似乎您包含js的方式会阻塞其下方的脚本运行。由于每个浏览器处理阻塞脚本的方式略有不同,这就是为什么在其中一个浏览器中可以正常工作而在另一个浏览器中不行。请将加载www.youtube.com/iframe_api的脚本移到定义onYouTubePlayerAPIReady之后。我还建议将其更改为onYouTubeIframeAPIReady,但是任何一个都应该可以。
另一件事是确保在相同的脚本标签中加载www.youtube.com/iframe_api并定义'onYouTubeIframeAPIReady'。因为它是单线程环境,所以这应该确保在加载其他脚本之前定义了onYouTubeIframeAPIReady。

Greg,我做了更改:将YouTube API包含行移动到onYouTubePlayerAPIReady之后,在Firefox中视频仍然无法播放。 - vic116
哦,抱歉,实际上它现在可以在Opera中工作了!非常感谢 :) - vic116
很好。如果你能接受这个作为正确答案,那就太好了。 - Greg Schechter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接