Javascript嵌入了youtube id

时间:2012-05-13 11:59:22

标签: javascript youtube html-parsing

我有像这样嵌入youtube视频:

    <object height="25" width="610"><param name="movie" 
    value="http://www.youtube.com/v/GBApIkX0YN4&hl=en_US&color1=0xf4f4f4&color2=0xffffff&hd=0&fs=0&enablejsapi=1&playerapiid=ytplayer">
    </param>
    <param name="allowFullScreen" value="true">
    </param>
    <param name="allowscriptaccess" value="always">
    </param>
    <embed src="http://www.youtube.com/v/GBApIkX0YN4&hl=en_US&color1=0xf4f4f4&color2=0xffffff&hd=0&fs=0" height="25" width="610" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always">
    </embed></object>

在youtube示例中,他们使用以下代码查看玩家何时更改状态。

    function onYouTubePlayerReady(playerId) {
  ytplayer = document.getElementById("myytplayer");
  ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
}

    function onytplayerStateChange(newState) {
    alert("Player's new state: " + newState);
    }

当我把它放到我的页面时,当我播放暂停视频时没有任何反应(我认为它应该是一个警告,说明状态是什么。)

我想使用javascript“GBApIkX0YN4”获取其ID,以便我可以使用youtube api并查看视频何时结束以调用javascript函数。

  1. 是否有更简单的方法来判断视频何时结束?

  2. 如果没有,我将如何获得其ID?

  3. 我看到另一个人用过

        youtubeID = v.attr('src').match(/youtube\.com.*?v[\/=](\w+)/)[1];
    

    但我不知道如何从嵌入代码中找到网址。

    由于

1 个答案:

答案 0 :(得分:0)

您应该使用Youtube Javascript API这可以通过添加&enablejsapi=1在您的嵌入网址中启用,以便您的网址如下所示:

http://www.youtube.com/v/GBApIkX0YN4&hl=en_US&color1=0xf4f4f4&color2=0xffffff&hd=0&fs=0&enablejsapi=1

要调用播放器API方法,必须首先获得对要控制的播放器对象的引用。这可以通过调用or标签上的getElementById()获取播放器对象来完成。

然后,您可以在播放器对象上设置onStateChange事件,该事件将根据视频的状态返回值。您需要检查值为0,表示视频已结束。

来自文档:

This event is fired whenever the player's state changes. Possible values are unstarted (-1), ended (0), playing (1), paused (2), buffering (3), video cued (5). When the SWF is first loaded it will broadcast an unstarted (-1) event. When the video is cued and ready to play it will broadcast a video cued event (5).

我希望有所帮助。