1
我試圖捕捉一個事件,以便當YouTube播放器結束時,我可以重定向到另一個網頁。但它不起作用。任何人都可以發現任何錯誤JavaScript似乎編譯確定。youtube api不會在視頻結束時觸發ENDED事件(使用iframe)
這裏就是整個頁面的代碼(其實我從下面的瀏覽器的查看源代碼頁粘貼吧。
它相當簡單,該事件在onYouTubePlayerAPIReady()函數列出,我認爲它應該火的時候,代碼結束我已經把「警報」,看看它看起來它並不:。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
})
// 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads.
function onYouTubePlayerAPIReady() {
player = new YT.Player('iframeid', {
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.ENDED) {
alert("video is over");
location.href= 'k_Origins.aspx';
}
else if (event.data == YT.PlayerState.PAUSED) {
}
else if (event.data == YT.PlayerState.PLAYING) {
}
else if (event.data == YT.PlayerState.BUFFERING) {
}
else if (event.data == YT.PlayerState.CUED) {
}
else {
}
}
</script>
</head>
<body>
<form method="post" action="dostuff.aspx" id="form1">
<div id="ContainPlayer">
<iframe id="iframeid" width="420" height="315"
src="http://www.youtube.com/embed/8X0ZkN_EtTE?hl=en&fs=1&autoplay=1&autohide=0&enablejsapi=1&modestbranding=1&playerapiid=ourvideoid&rel=0"
frameborder="0" ></iframe>
</div>
</div>
</form>
</body>
</html>
錯字不是問題。問題是我的網址有origin屬性。換句話說,www.youtube.com/...origin=mysite.com。這顯然干擾了YouTube的api。我應該把它放在我的示例中,但我不想放棄我的網站。它只是向你展示,你必須把所有東西都放進去,不管你認爲它是否相關。 –