Youtube iframe播放器API' onReady'尽管建议修复,事件仍未触发

时间:2014-03-19 23:11:21

标签: youtube-api

我正在为我正在构建的应用使用youtube iframe播放器API。一切都运行良好,直到大约一个月前(2014年2月)。现在没有任何事件被解雇,甚至没有'OnReady'。其中一篇帖子建议在src属性中添加“origin =”。这对我没有解决。这是我的代码片段 - 我正在使用angularjs。

HTML:

<iframe id="player" width="1280" height="720" frameborder="0" allowfullscreen="" src="https://www.youtube.com/embed/-PXgGnKhEdQ?autoplay=1&theme=light&color=white&origin=http://127.0.0.1:8000">

使用Javascript:

$scope.onYouTubeIframeAPIReady = function(id) {
    var player = new YT.Player('player', {
        videoId: id,
        events: {
            'onReady': function (event) {
                 player.addEventListener('onStateChange', function(e) {
                     console.log('onReady');
                 });
             },
             'onStateChange': function (event) {
                 console.log('onStateChange')
             }
        }
    });
}

视频播放和停止,但这些事件不会被解雇。我还看到一个错误“错误:广告adLoadError错误:无法从服务器请求广告。原因:错误#2032 errorCode:1103”。不确定这是否会干扰事件机制。

感谢任何帮助。

谢谢, 迪帕

2 个答案:

答案 0 :(得分:1)

你的HTML已经消失了,Deepa,但我可以告诉你他想要做什么。

我写了一个iframe,他们在那个iframe ID上调用了新的YT.Player,直到几周前工作正常。经过一些研究,我发现YouTube每隔几个月就会破坏这一功能 - 但是它们永远不会破坏你使用新的YT.Player为你写出iframe的功能。我在google api bug中看到的最新票证是

https://code.google.com/p/gdata-issues/issues/detail?id=6218

我不再用它的头撞击它并使用默认方法重建我的实现,即使文档说你将YT.Player附加到已经编写的iframe的方法也没问题。

答案 1 :(得分:0)

您需要在iframe src中添加rel=0

您的HTML需要像这样更改

<iframe id="player" width="1280" height="720" frameborder="0" allowfullscreen="" src="https://www.youtube.com/embed/-PXgGnKhEdQ?rel=0&autoplay=1&theme=light&color=white&origin=http://127.0.0.1:8000">

我希望您已将该脚本包含在您的页面中

var tag = document.createElement('script');
    tag.src = "http://www.youtube.com/player_api";
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);