MrLeN
03-07-2009, 10:28 AM
In the code below, which if you paste into a html document and view in your browser -- will work, I need to put in some JavaScript which detects that player state, and if it is 0 then the page redirects.
Can you show me how I can do this?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
<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">
/*<![CDATA[*/
body {
font-family: verdana, helvetica;
background-color: white;
}
#timedisplay {
border: solid 1px red;
width: 50px;
}
/*]]>*/
</style>
<script type="text/javascript">
//<![CDATA[
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">
//<![CDATA[
// 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&border=0&enablejsapi=1&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>
Can you show me how I can do this?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
<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">
/*<![CDATA[*/
body {
font-family: verdana, helvetica;
background-color: white;
}
#timedisplay {
border: solid 1px red;
width: 50px;
}
/*]]>*/
</style>
<script type="text/javascript">
//<![CDATA[
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">
//<![CDATA[
// 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&border=0&enablejsapi=1&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>