Hello,
I am occasionally getting the following error
TypeError: player.getConfig is not a function message=player.getConfig is not a function
(I seem to get this when part of the player is no longer or partly visible on the screen.
I am wondering where I went wrong?
this is the code I am using below
//this is the html
<div style="position: absolute;width: 320px;height: 240px;left: 10px;top: 10px;z-index: 2;">
<a id="videoPlayer" class="playerContainer" href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash">Get the Flash Plugin to see the video.</a>
</div>
//This is the js code
var player;
var currentItem = -1;
var preBuffer = false;
var playerIndex = 0;
var timerID = 0;
function playerReady(obj) {
player = document[obj.id];
player.addControllerListener('ITEM', 'itemMonitor');
player.addModelListener('LOADED', 'loadedMonitor');
//...to play a specific item using getQueryParamValue('item')
if((playerIndex != null) && (playerIndex < player.getPlaylist().length)) {
player.sendEvent('ITEM', (playerIndex - 1));
playerIndex = null;
}
};
function itemMonitor(obj) {
if(currentItem != obj.index) {
//...global for use in other functions
currentItem = obj.index;
preBuffer = false;
}
};
function loadedMonitor(obj) {
if(((obj.loaded / obj.total) > .5) && (!preBuffer)) {
var playlist = player.getPlaylist();
var url = playlist[currentItem + 1]['file'].replace("../","");
//added replace to remove the ../ from the array (needed to keep videos on the root)
preBuffer = true;
sendRequest(url);
}
};
function sendRequest(url) {
$.get(url, function(){
preBuffer = false;
});
}
function createPlayer() {
var flashvars = {
file:"",
image:"",
autostart:"true",
bufferlength:"1",
icons:"false",
controlbar:"none",
playlist:"none",
playlistsize:"0",
shuffle:"false",
stretching:"exactfit",
repeat:"list"
}
var params = {
allowfullscreen:"false",
allowscriptaccess:"always",
wmode:"opaque"
}
var attributes = {
id:"player1",
name:"player1"
}
swfobject.embedSWF('flash/player.swf', 'videoPlayer', '320', '240', '9.0.124', false, flashvars, params, attributes);
return true;
}
$(window).load(function() {
var winWidth = $(window).width();
var winHeight = $(window).height();
var leftSide;
var rightSide;
createPlayer();
$("#gotdmap").click(function(e){
$("#playerContainer").show(function(){
timerID = 0;
setTimeout("player.sendEvent('LOAD',loadMovie());timerID = setInterval('moniterMovie();',100);", 800);
});
});
});
function moniterMovie(){
try{
if($("#playerContainer").length == 1){
if(player.getConfig().state == "COMPLETED"){
clearInterval(timerID);
$("#playerContainer").hide();
}
}
} catch(err) {
clearInterval(timerID);
console.log(err);
}
}
function loadMovie(){
var videoList = new Array();
videoList[0] = {
file:"../videos/handc.flv",
image:"",
type:"video"
}
return videoList;
}
//CSS
#playerContainer {
position: absolute;
z-index: 2;
display: none;
width: 340px;
height: 321px;
}
My guess is that you are trying to add the Listeners before the player is really ready and it's occasionally failing.
function playerReady(obj){
player = document.getElementById(obj.id);
addListeners();
};
function addListeners()
{
playlist = player.getPlaylist();
if((playlist !== null) && (playlist.length > 0))
{
player.addControllerListener('ITEM', 'itemMonitor');
player.addModelListener('LOADED', 'loadedMonitor');
//...to play a specific item using getQueryParamValue('item')
if((playerIndex != null) && (playerIndex < player.getPlaylist().length))
{
player.sendEvent('ITEM', (playerIndex - 1));
playerIndex = null;
}
else
{
itemMonitor({index:0});
}
}
else
{
setTimeout("addListeners()", 100);
}
};