XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Javascript & Ajax (http://xhtmlforum.de/forumdisplay.php?f=83)
-   -   Safari 2 und Objektvariablen (http://xhtmlforum.de/showthread.php?t=48843)

Kurtk 11.11.2007 23:08

Safari 2 und Objektvariablen
 
Hallo zusammen,

Unabhängig von den beiden anderen geposteten Problemen :):

Folgender Javascript Code funktioniert nicht unter Mac OS Safari 2, und ich kann mir nicht erklären wieso. Interessanterweise läuft das Skript in der Windowsversion von Safari und unter Safari 3. Ebenso in allen anderen Browsern. Ich habe folgenden ImagePreloader verwendet:

JavaScript Image Preloader - WebReference.com -

Die Objektroutine onComplete wird nicht aufgerufen, ebensowenig onerror oder onabort. Safari 2 meldet:

„Undefined value - Line: 152“, die Zeile habe ich markiert.

Hat jemand dazu irgendwelche Anregungen?

-------------------------
Code:

var preload_text ='Preloading';

// Animation im Preload Div
function preload_progress()
{
preload_text += '.';
window.document.getElementById("theDiv").innerHTML=preload_text ;

}

//Imagepreloader Objekt initieren

function ImagePreloader(images, callback)

{
 // Hide the content until all is preloaded
 document.getElementById("theDiv").style.display="inline";
 //document.getElementById("page").style.display="none";
  // store the call-back

    window.document.getElementById("theDiv").progress=setInterval("preload_progress()", 500);
  this.callback = callback;


  // initialize internal state.
  this.nLoaded = 0;
  this.nProcessed = 0;
  this.aImages = new Array;


  // record the number of images.
  this.nImages = images.length;


  // for each image, call preload()
  for ( var i = 0; i < images.length; i++ )
      this.preload(images[i]);
}

// Image Preloader Objektfunktionen und Attribute

ImagePreloader.prototype.preload = function(image)
{

  // create new Image object and add to array
  var oImage = new Image;
  this.aImages.push(oImage);

  // set up event handlers for the Image object
  oImage.onload = ImagePreloader.prototype.onload;
  oImage.onerror = ImagePreloader.prototype.onerror;
  oImage.onabort = ImagePreloader.prototype.onabort;

  // assign pointer back to this.
  oImage.oImagePreloader = this;
  oImage.bLoaded = false;
  // assign the .src property of the Image object
  oImage.src = image;
}

ImagePreloader.prototype.onComplete = function()
{

  clearInterval(window.document.getElementById("theDiv").progress);
  this.nProcessed++;
  if (this.bError == true){
    window.document.getElementById("theDiv").innerHTML = "Error while preloading site [one or more images could not be loaded]!";}

  if ( this.nProcessed == this.nImages )
  {
      this.callback(this.aImages, this.nLoaded);
  }

}

ImagePreloader.prototype.onload = function()
{
  this.bLoaded = true;
  this.oImagePreloader.nLoaded++; // Diese Zeile wird moniert
  this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onerror = function()
{
 clearInterval(window.document.getElementById("theDiv").progress);
  this.bError = true;
  this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onabort = function()
{
 clearInterval(window.document.getElementById("theDiv").progress);
  this.bAbort = true;
  this.oImagePreloader.onComplete();
}



Alle Zeitangaben in WEZ +2. Es ist jetzt 13:47 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023