我正在为我正在构建的应用使用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”。不确定这是否会干扰事件机制。
感谢任何帮助。
谢谢, 迪帕
答案 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);