1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Javascript Problem Mac OS Safari

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Benjin, 08.11.07.

  1. Benjin

    Benjin Gast

    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 steht 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();
    }
     
  2. Nogger

    Nogger Damasonrenette

    Dabei seit:
    05.11.05
    Beiträge:
    494
  3. Benjin

    Benjin Gast

    Javascript FEhlerkonsole

    Hi, soweit ich das sehe wird kein Fehler gemeldet. o_O
     
  4. Nogger

    Nogger Damasonrenette

    Dabei seit:
    05.11.05
    Beiträge:
    494
    Jede Wette: Solange das img-Element nicht ins DOM eingehangen wird (und vielleicht auch CSS-mäßig sichtbar ist), lädt Safari 2 auch die Bilder nicht. Eine Optimierung mit Nebenwirkungen.

    Oder benutzt du auf dem Mac auch Safari 3?
     
  5. Benjin

    Benjin Gast

    Hallo,

    habe nun doch eine Fehlermeldung (hatte bisher keine Möglichkeit das selber auf einem Mac zu testen, und mein Gegenpart hat wohl die Fehlerkonsole nicht richtig verstanden...).

    Und zwar sagt safari 2.0

    Line 162 - "undefined value" nLoaded

    Folgendes Problem: Safari 2.0 sagt mir in der Objektfunktion onloaded
    wenn ich nLoaded erhöhe : "undefined value". ich habe gerade die Zeile
    mit nloaded auskommentiert, dann kommt eine ähnliche Meldung für
    onComplete().

    Daher gehe ich davon aus dass es ein Problem mit dem Zeiger ist, der
    in der Objektfunktion preload dem oImagePreloader zugewiesen wird.

    Dh für mich dass die markierte Zeile nicht funktioniert oder der
    Zeiger in safari 2 anders interpretiert wird
     

Diese Seite empfehlen