Need Help with JavaScript Detection

Discussion in 'JavaScript' started by MrLeN, Aug 16, 2008.

  1. #1
    I got this code from the following page:

    http://code.google.com/apis/youtube/js_example_1.html

    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>
          YouTube Javascript API Example page
        </title>
        <script src="http://swfobject.googlecode.com/svn/tags/rc3/swfobject/src/swfobject.js" type="text/javascript"></script>
        <style type="text/css">
    
        body {
          font-family: verdana, helvetica;
          background-color: white;
        }
    
        #timedisplay {
          border: solid 1px red;
          width: 50px;
        }
        </style>
        <script type="text/javascript">
    
            function updateHTML(elmId, value) {
              document.getElementById(elmId).innerHTML = value;
            }
    
            function setytplayerState(newState) {
              updateHTML("playerstate", newState);
            }
    
            function onYouTubePlayerReady(playerId) {
              ytplayer = document.getElementById("myytplayer");
              setInterval(updateytplayerInfo, 250);
              updateytplayerInfo();
              ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
              ytplayer.addEventListener("onError", "onPlayerError");
            }
    
            function onytplayerStateChange(newState) {
              setytplayerState(newState);
            }
    
            function onPlayerError(errorCode) {
              alert("An error occurred: "+ errorCode);
            }
    
            function updateytplayerInfo() {
              updateHTML("bytesloaded", getBytesLoaded());
              updateHTML("bytestotal", getBytesTotal());
              updateHTML("videoduration", getDuration());
              updateHTML("videotime", getCurrentTime());
              updateHTML("startbytes", getStartBytes());
            }
    
            // functions for the api calls
            function play() {
              if (ytplayer) {
                ytplayer.playVideo();
              }
            }
    
            function pause() {
              if (ytplayer) {
                ytplayer.pauseVideo();
              }
            }
    
            function stop() {
              if (ytplayer) {
                ytplayer.stopVideo();
              }
            }
    
            function getPlayerState() {
              if (ytplayer) {
                return ytplayer.getPlayerState();
              }
            }
    
            function seekTo(seconds) {
              if (ytplayer) {
                ytplayer.seekTo(seconds, true);
              }
            }
    
            function getBytesLoaded() {
              if (ytplayer) {
                return ytplayer.getVideoBytesLoaded();
              }
            }
    
            function getBytesTotal() {
              if (ytplayer) {
                return ytplayer.getVideoBytesTotal();
              }
            }
    
            function getCurrentTime() {
              if (ytplayer) {
                return ytplayer.getCurrentTime();
              }
            }
    
            function getDuration() {
              if (ytplayer) {
                return ytplayer.getDuration();
              }
            }
    
            function getStartBytes() {
              if (ytplayer) {
                return ytplayer.getVideoStartBytes();
              }
            }
    
            function mute() {
              if (ytplayer) {
                ytplayer.mute();
              }
            }
    
            function unMute() {
              if (ytplayer) {
                ytplayer.unMute();
              }
            }
        </script>
    
      </head>
      <body id="page">
      <div>
        <div id="ytapiplayer">
          You need Flash player 8+ and JavaScript enabled to view this video.
        </div>
        <script type="text/javascript">
    
          // allowScriptAccess must be set to allow the Javascript from one domain to access the swf on the youtube domain
          var params = { allowScriptAccess: "always" };
          // this sets the id of the object or embed tag to 'myytplayer'. You then use this id to access the swf and make calls to the player's API
          var atts = { id: "myytplayer" };
          swfobject.embedSWF("http://www.youtube.com/v/ma9I9VBKPiw&amp;border=0&amp;enablejsapi=1&amp;playerapiid=ytplayer", 
                             "ytapiplayer", "425", "344", "8", null, null, params, atts);
    
        </script>
        
        <!-- HTML below here is for display of the player info + state -->
        <div>
    
          Player state: <span id="playerstate">--</span>
        </div>
        <br />
          <a href="javascript:void(0);" onclick="play();">Play</a> | <a href="javascript:void(0);" onclick="pause();">Pause</a> | <a href="javascript:void(0);" onclick="stop();">Stop</a> | <a href="javascript:void(0);" onclick="mute();">Mute</a> | <a href="javascript:void(0);" onclick="unMute();">Unmute</a> |
        <br /><br />
    
        <form action="" onsubmit="seekTo(document.getElementById('seekto').value); return false;">
          <div><input id="seekto" type="text" size="4" /><input type="submit" value="Seek to" /></div>
        </form>
        <br />
        <div>
          Duration: <span id="videoduration">--:--</span> | Current Time: <span id="videotime">--:--</span>
    
        </div>
        <br />
        <div id="bytesdisplay">
          Bytes Total: <span id="bytestotal">--</span> | Start Bytes: <span id="startbytes">--</span> | Bytes Loaded: <span id="bytesloaded">--</span>
        </div>
    
      </div>
      </body>
    </html>
    
    Code (markup):
    I want to detect the player state and if it is zero, I want to redirect the page to another URL. How do I go about doing that?

    When the video ends, the payer state becomes 0

    There is a player state function in the above code

    
    function getPlayerState() {
              if (ytplayer) {
                return ytplayer.getPlayerState();
              }
            }
    
    Code (markup):
    If you are good at javascript can you give me a hand here?

    All I want is the player state javascript.

    I don't need any of the other JavaScript whatsoever.

    I simply need to find a way to detect when the video has finished.
     
    MrLeN, Aug 16, 2008 IP