Ergebnis 1 bis 2 von 2
  1. #1
    KurtK ist offline Grünschnabel
    registriert
    09-11-2007
    Beiträge
    3

    Javascript Problem Mac OS Safari

    Hallo zusammen,

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

    JavaScript Image Preloader - WebReference.com -

    Und diesen lediglich um eine kleine "Animation" (Einen Text der zweimal pro Sekunde um einen Punkt erweitert wird) ergänzt. Ich weiß nicht genau, welche Befehl Safari unter Mac OS nicht ausführt, jedenfalls bleibt meine "Animation" in einer Endlosschleife hängen, obwohl alle Bilder entsprechend geladen werden. Die Objektroutine onComplete wird also nicht aufgerufen, ebensowenig onerror oder onabort. 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++;
       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();
    }
    Geändert von KurtK (09-11-2007 um 20:00 Uhr)

  2. #2
    kkokus ist offline Jungspund
    registriert
    24-09-2007
    Beiträge
    10

    AW: Javascript Problem Mac OS Safari

    Ich würde dir empfehlen nicht die onload-Funktion zu nutzen, weil diese eigentlich nur für fenster und frames gedacht ist, aber nicht für Bilder.
    Stattdessen könntest du die Eigenschaft image.complete abfragen. Sobald diese true ist wäre das Bild dann geladen. Hier der Code dazu:

    PHP-Code:

    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.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;

       
    // check if image has loaded
       
    var int setInterval( function() {
          if(
    oImage.complete){ 
             
    clearInterval(int);
             
    ImagePreloader.prototype.onload();
       }, 
    50);



Ähnliche Themen

  1. Komisches Javascript Problem
    Von mm124 im Forum JavaScript
    Antworten: 0
    Letzter Beitrag: 27-04-2007, 18:33
  2. Javascript Menü Problem
    Von ATom im Forum CSS und (X)HTML
    Antworten: 6
    Letzter Beitrag: 01-04-2007, 01:48
  3. javascript function variablenübergabe problem
    Von manne89 im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 02-03-2007, 13:45
  4. Problem mit Javascript Links in Div-Layer
    Von headcrash84 im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 19-12-2006, 15:55
  5. onLoad Problem in Safari
    Von reeko im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 21-06-2006, 14:13

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •