Toshi: Wieder preload

Hallo Comunity,

wiedermal ein Preload Problem. Für mein Navigation (Rollover) habe ich die Bilder
im <script> direkt auf der Website geschrieben und eingebunden.
Das Funktioniert alles wunderbar.

Jetzt wollte ich den gesamten Script in eine Externe Datei auslagern.
Gesagt getan. Jetzt taucht bei mir die Laufzeitfehlermeldung.
Ansich verständlich da die Datei (so wie ich es verstanden habe) erst
zum Schluss der Website geladen wird. Wie kann ich den Browser zwingen Sie schon vorher zu laden?

Grüße Toshi

  1. Hallo Toshi,

    Stöhn... deutsch ist nicht deine Muttersprache, oder? So wird's aber schwer.

    Für mein Navigation (Rollover) habe ich die Bilder
    im <script> direkt auf der Website geschrieben und eingebunden.

    Du hast die Bilder geschrieben? Bilder werden doch eigentlich gezeichnet, gemalt oder fotgrafiert oder so.

    Das Funktioniert alles wunderbar.

    Schön.

    Jetzt wollte ich den gesamten Script in eine Externe Datei auslagern.
    Gesagt getan. Jetzt taucht bei mir die Laufzeitfehlermeldung.

    Wo taucht sie denn, im Baggersee? Von welcher Laufzeitfehlermeldung sprichst du (es gibt ja sooo viele davon)?

    Ansich verständlich da die Datei (so wie ich es verstanden habe) erst
    zum Schluss der Website geladen wird.

    Welche Datei? Die externe mit dem Script?

    Wie kann ich den Browser zwingen Sie schon vorher zu laden?

    Vielleicht im <head> statt am Ende des <body>.

    Gruß, Don P

    1. Uhi. Wie hast du erraten das Deutsch nicht meine Muttersprache ist.

      Also dann. Die Bilder habe ich natürlich nicht geschrieben und nicht gemalt,
      sondern das was ich sagen wollte ist, ich habe die Bilder direkt am Anfang
      ins <head> unter <script> eingetragen. Und da hat es ja alles wunderbar
      funktioniert.
      Die Fehlermeldung taucht im FrontPage unter Vorschau auf.
      Da steht nur Laufzeitfehler. Ohne irgendwelche Code oder sonstige Angaben.
      Wenn ich dann über einen Button mit der Mouse gehe erscheint noch eine
      Fehlermeldung. Laufzeitfehler 'homeOn' nicht definiert.
      Wegen der Datei ist es so das ich im <head> die Datei rollover.js lade. Wie
      man so schön an der Endung sieht ist mein Skript (Kopie des vorher
      funktionierenden Skripts)

      Ich gebe zu ich habe mich am Anfang nicht besonders ausgedrückt aber man
      hätte es auch so verstehen können.

      Toshi

      Hallo Toshi,

      Stöhn... deutsch ist nicht deine Muttersprache, oder? So wird's aber schwer.

      Für mein Navigation (Rollover) habe ich die Bilder
      im <script> direkt auf der Website geschrieben und eingebunden.

      Du hast die Bilder geschrieben? Bilder werden doch eigentlich gezeichnet, gemalt oder fotgrafiert oder so.

      Das Funktioniert alles wunderbar.

      Schön.

      Jetzt wollte ich den gesamten Script in eine Externe Datei auslagern.
      Gesagt getan. Jetzt taucht bei mir die Laufzeitfehlermeldung.

      Wo taucht sie denn, im Baggersee? Von welcher Laufzeitfehlermeldung sprichst du (es gibt ja sooo viele davon)?

      Ansich verständlich da die Datei (so wie ich es verstanden habe) erst
      zum Schluss der Website geladen wird.

      Welche Datei? Die externe mit dem Script?

      Wie kann ich den Browser zwingen Sie schon vorher zu laden?

      Vielleicht im <head> statt am Ende des <body>.

      Gruß, Don P

      1. Hi,

        bitte zitiere sinnvoll, und nicht einfach alles.

        Die Fehlermeldung taucht im FrontPage unter Vorschau auf.
        Da steht nur Laufzeitfehler. Ohne irgendwelche Code oder sonstige Angaben.
        Wenn ich dann über einen Button mit der Mouse gehe erscheint noch eine
        Fehlermeldung. Laufzeitfehler 'homeOn' nicht definiert.

        Und jetzt duerfen wir weiter raten, wie und *wo* du vergessen haben koenntest, ein solches Objekt zu definieren ...?

        MfG ChrisB

      2. Mahlzeit,

        Die Fehlermeldung taucht im FrontPage unter Vorschau auf.

        Frontpage ist Mist.

        Da steht nur Laufzeitfehler. Ohne irgendwelche Code oder sonstige Angaben.

        Tja. Und wem soll das weiterhelfen? Vielleicht probierst Du es mal in einem vernünftigen Browser (mit vernünftiger Javascript-Fehlerkonsole) aus?

        Wenn ich dann über einen Button mit der Mouse gehe erscheint noch eine
        Fehlermeldung. Laufzeitfehler 'homeOn' nicht definiert.

        Aha. Und was und wo ist dieses "homeOn"? Erwartest Du, dass alle Leser eine funktionierende Glaskugel besitzen? Keine Arme - keine Kekse ... will sagen: poste relevanten(!) Quellcode, vollständige Fehlermeldungen und ausführliche Beschreibungen - dann kann Dir u.U. geholfen werden.

        Ich gebe zu ich habe mich am Anfang nicht besonders ausgedrückt aber man
        hätte es auch so verstehen können.

        Nein.

        Toshi

        Hallo Toshi,

        TOFU ist Mist.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      3. Hallo,

        Die Fehlermeldung taucht im FrontPage unter Vorschau auf.
        Da steht nur Laufzeitfehler. Ohne irgendwelche Code oder sonstige Angaben.

        Sorry, FrontPage kenne ich nur vom Namen her. Ist meines Wissens so ein klickibunti-allround-Webseitenerstellungsprogramm, das einem alle Arbeit abnehmen soll. Was das Ding überhaupt macht oder bei dir falsch macht, kann ich beim besten Willen nicht erraten.

        Gibt es denn kein spezielles Frontpage-Forum irgendwo da draußen? Google müsste das doch wissen...

        Viel Glück,
        Don P

      4. Es stimmt schon das FrontPage nicht besonders gut ist, aber ich benutze es
        nur um meinen Code direkt einzugeben. Insofern ist es eigentlich egal. Das
        heißt auch das ich den Code selbst erstelle und es mir nicht von Frontpage
        erstellen lasse.

        Natürlich kann man nicht wissen was das Objekt "homeOn" ist, ist aber auch
        gar nicht nötig da es nicht darum geht. Problem ist das Code, das zuerst
        funktioniert hat, jetzt in der externen Datei Rollover.js nicht
        funktioniert. Es will die Bilder auch nicht laden wenn ich im <body> die Funktion per onload lade.

        Toshi

        Na ja, stehe nicht so auf Bratwurst

        1. Mahlzeit,

          Natürlich kann man nicht wissen was das Objekt "homeOn" ist, ist aber auch
          gar nicht nötig da es nicht darum geht.

          Nicht? Komisch - ich dachte, das wäre die von Dir genannte Fehlermeldung.

          Problem ist das Code, das zuerst funktioniert hat, jetzt in der externen Datei Rollover.js nicht funktioniert.

          "Funktioniert nicht" ist keine sinnvolle und zielführende Fehlerbeschreibung. Da Du nicht willens oder in der Lage bist, zumindest rudimentären Quellcode zu liefern oder detailliert zu beschreiben, welche Fehlermeldung in welchem Browser an welcher Stelle auftritt, kann zumindest ich Dir im Moment nicht weiterhelfen.

          Es will die Bilder auch nicht laden wenn ich im <body> die Funktion per onload lade.

          Wer ist "er"? Und von welcher Funktion sprichst Du? Vielleicht wäre Quellcode tatsächlich hilfreich ...

          Na ja, stehe nicht so auf Bratwurst

          ?

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        2. Hallo,

          Natürlich kann man nicht wissen was das Objekt "homeOn" ist, ist aber auch
          gar nicht nötig da es nicht darum geht. Problem ist das Code, das zuerst
          funktioniert hat, jetzt in der externen Datei Rollover.js nicht
          funktioniert.

          Ok, du hast also
          1. eine Version, die funktioniert.
          2. eine neue Version mit dem einzigen Unterschied, dass JavaScript jetzt ausgelagert ist.

          Alles JavaScript ist ansonsten identisch und der HTML-Code auch.

          Stimmt das so? Wenn ja, dann dürfte die Sache nicht schwer sein. Du musst nur dafür sorgen, dass das/die ausgelagerte(n) Script(s) jeweils genau an der/den Stelle(n) eingebunden sind, wo sie es vorher auch waren.

          Vorher (funktionierende Version):

          <html>
          [...HTML-code 1...]
          <script type="text/javascript">//JS-Code 1...</script>
          [...HTML-code 2...]
          <script type="text/javascript">//JS-Code 1...</script>
          [...HTML-code 3...]
          </html>

          Nachher (muss auch funktionieren):

          <html>
          [...HTML-code 1...]
          <script type="text/javascript" src="JScode1.js"></script>
          [...HTML-code 2...]
          <script type="text/javascript" src="JScode2.js></script>
          [...HTML-code 3...]
          </html>

          Voraussetzung ist natürlich, dass alles JavaScript wirklich unverändert ist und das HTML auch. Wenn nicht, dann sorge halt dafür, dass es so ist und teste dann nach jeder kleinen Änderung. Dann siehst du immer sofort, wo ein Fehler ist. Falls es nämlich nach einer kleinen Änderung nicht mehr funktioniert, ist letzte Änderung schuld.

          Gruß, Don P

          1. So jetzt haben wir es. Es ist genau so wie du sagst habe einen Javascript
            der mir die Bilder vorladet. Diesen Skript wollte ich in eine externe Datei
            auslagern. Habe soweit alles übernomen und mit <script type"text/javascript
            src="javascript/rollover.js"> in <head> geladen (Da mein ursprünglicher Code
            auch in <head> war).

            Einfache Übernahme des Codes:

            <script type="text/javascript" lang="javascript">
             //Preloads Bilder
              hauptOn = new Image();
              hauptOff = new Image();
              ...
              hauptOn.src = "images/homebuttonruOff.jpg"
              hauptOff.src = "images/homebuttonruOn.jpg"
              ...

            function wechsel (feld,bild)
             {
              feld.src = bild.src;

            }
            </script>

            hat nicht geholfen. Dann habe gegoogelt und herausgefunden das die
            Javaskriptdatei erst geladen wird wenn die Seite schon aufgebaut wurde.
            Deswegen habe ich um die Bilder herum eine Funktion geschrieben und in
            <body> mit onload geladen. Das sieht so aus <body onload="Vorladen()">.
            Der Script in der .js Datei sieht jetzt so aus.

            function Vorladen()
            {
            //Preloads Bilder
              var hauptOn = new Image();
              var hauptOff = new Image();
              ...
              hauptOn.src = "images/homebuttonruOff.jpg";
              hauptOff.src = "images/homebuttonruOn.jpg";
              ...

            }

            function wechsel (feld,bild)
             {
              feld.src = bild.src;

            }

            1. Mahlzeit,

              danke für die erstmalige ausführliche Beschreibung inkl. Quellcode. ALLES vorherige waren lieblos hingeworfene Bröckchen, die für einen Außenstehenden exakt 0 Aussagekraft hatten.

              Der Script in der .js Datei sieht jetzt so aus.

              function Vorladen()
              {
              //Preloads Bilder
                var hauptOn = new Image();
                var hauptOff = new Image();

              "hauptOn" und "hauptOff" sind jetzt lokale Variablen innerhalb der Funktion "Vorladen()". Ist das beabsichtigt? Werden die Variablen noch irgendwo außerhalb der Funktion benötigt? Wie kommen die Bilder in das Dokument?

              MfG,
              EKKi

              --
              sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            2. Hallo,

              Habe soweit alles übernomen und mit <script type"text/javascript
              src="javascript/rollover.js"> in <head> geladen (Da mein ursprünglicher Code
              auch in <head> war).

              Aha. Und du bist sicher, dass rollover.js auch wirklich im Unterordner javascript/ liegt, also eine Ebene tiefer als die HTML-Datei, die das script aufruft? Füge mal ein
              alert("Bin am Laden...");
              als ersten Befehl in rollover.js ein um zu sehen, ob auch es wirklich ausgeführt wird.

              hat nicht geholfen. Dann habe gegoogelt und herausgefunden das die
              Javaskriptdatei erst geladen wird wenn die Seite schon aufgebaut wurde.

              Das glaube ich nicht. An der Stelle, wo

                
              <script type"text/javascript src="javascript/rollover.js"></script>  
              ----------------------------------------------------------^^^^^^^^^!!
              

              steht, wird das Script geladen und ausgeführt, bevor der Browser irgend etwas anderes macht.

              Der Script in der .js Datei sieht jetzt so aus.

              function Vorladen()
              {
              //Preloads Bilder
                var hauptOn = new Image();
                var hauptOff = new Image();

              Wegen "var =" sind hauptOn/hauptOff" jetzt wie gesagt lokale Variablen, vorher waren sie global. Der Unterschied kann entscheidend sein.

              Welchen Browser benutzt du? Gibt es eine Fehlerkonsole? Vergiss Frontpage erstmal. Lade das Ding direkt in einen richtigen Browser, z.B. Firefox oder Opera.

              Gruß, Don P

              1. OOps,

                Das:

                alert("Bin am Laden...");

                lockt hoffentlich nicht die bösen Bundestrojaner zu den allen Teilnehmern des SELFHTML-Forums ;-)

                Habe es leider zu spät bemerkt...

                Gruß, Don P

                1. Hallo Don!

                  Faut pas faire de faux pas...

                  *SCNR*

                  Viele Grüße aus Frankfurt/Main,
                  Patrick

                  --

                  _ - jenseits vom delirium - _
                  [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                  Nichts ist unmöglich? Doch!
                  Heute schon gegökt?
              2. Hallo,

                Habe soweit alles übernomen und mit <script type"text/javascript
                src="javascript/rollover.js"> in <head> geladen (Da mein ursprünglicher Code
                auch in <head> war).

                Aha. Und du bist sicher, dass rollover.js auch wirklich im Unterordner javascript/ liegt, also eine Ebene tiefer als die HTML-Datei, die das script aufruft? Füge mal ein

                Ja die Datei liegt wirklich da. habe jetzt nochmal den Pfad kontrolliert und per copy and paste aktualisiert.

                alert("Bin am Laden...");
                als ersten Befehl in rollover.js ein um zu sehen, ob auch es wirklich ausgeführt wird.

                ich glaube da liegt irgendwo mein Problem. ich habe jetzt die Zeile
                alert("Bin am Laden..."); hinzugefügt aber es gibt mir keine Meldung heraus.

                hat nicht geholfen. Dann habe gegoogelt und herausgefunden das die
                Javaskriptdatei erst geladen wird wenn die Seite schon aufgebaut wurde.

                Das glaube ich nicht. An der Stelle, wo

                <script type"text/javascript src="javascript/rollover.js"></script>
                ----------------------------------------------------------^^^^^^^^^!!

                
                > steht, wird das Script geladen und ausgeführt, bevor der Browser irgend etwas anderes macht.  
                >   
                > > Der Script in der .js Datei sieht jetzt so aus.  
                > >   
                > > function Vorladen()  
                > > {  
                > > //Preloads Bilder  
                > >   var hauptOn = new Image();  
                > >   var hauptOff = new Image();  
                >   
                > Wegen "var =" sind hauptOn/hauptOff" jetzt wie gesagt lokale Variablen, vorher waren sie global. Der Unterschied kann entscheidend sein.  
                  
                wie ich schon vorhin geschrieben habe, hatte ich zuerst das mit  
                Globalen variablen gehabt.  
                  
                
                >   
                > Welchen Browser benutzt du? Gibt es eine Fehlerkonsole? Vergiss Frontpage erstmal. Lade das Ding direkt in einen richtigen Browser, z.B. Firefox oder Opera.  
                >   
                > Gruß, Don P  
                >   
                  
                Ich Benutze zum testen sowohl Firefox und IE7 sowie beim schreiben  
                FrontPage. Die Browser geben mir zwar keine Fehlermeldung aber mit dem  
                Rollover funktioniert es immer noch nicht.  
                  
                Kann es sein das ich den Script nicht im <head> sondern mitten  
                im <body> aufrufen soll?  
                  
                Toshi
                
                1. Hallo,

                  Ja die Datei liegt wirklich da. habe jetzt nochmal den Pfad kontrolliert und per copy and paste aktualisiert.

                  Gut.

                  ich glaube da liegt irgendwo mein Problem. ich habe jetzt die Zeile
                  alert("Bin am Laden..."); hinzugefügt aber es gibt mir keine Meldung heraus.

                  Na also. Das Script wird nicht ausgeführt. Genau das ist dein Problem. Es ist jetzt nur noch die Frage, warum.
                  Hast du das End-tag </script> auch wirklich jeweils im HMTL stehen?

                  Ich Benutze zum testen sowohl Firefox und IE7 sowie beim schreiben
                  FrontPage. Die Browser geben mir zwar keine Fehlermeldung

                  Sicher nicht? Klick mal im Firefox auf Extras->Fehler-Konsole. Dann erscheint ein schönes Fenster mit Meldungen, was wo nicht funktioniert. Nur wenn es leer ist, ist alles ok.

                  Kann es sein das ich den Script nicht im <head> sondern mitten
                  im <body> aufrufen soll?

                  Nein. Wildes rumprobieren hat keinen Sinn. Solange du nicht "bin am Laden..." auf dem Schirm siehst, wird es nicht geladen, egal wo du das <script ...></script> notierst.

                  Zeig doch mal den *ganzen* <head> her, mitsamt <script ...></script>.
                  Ganz sicher stimmt da etwas nicht.

                  Aber *bitte*, lösche vorher meinen ganzen Sermon hier und zitiere nur die Sätze, auf die du genau antwortest! Ist das denn sooo schwer?

                  Gruß, Don P

                  1. OK. Also es ich denke es ist soweit alles erledigt. In der Fehler-Konsole war
                    nur ein Fehler aufgeführt. Das ich da mal an einer stelle mich verschrieben
                    habe und zwei mal var stehen hatte, ansonsten war alles in Ordnung.

                    Nachdem ich die Variablen von local ins global geändert habe, hat dann alles
                    funktioniert. (komisch das hatte ich vorhin schon probiert)

                    Mich wundert es nur wieso es dann trotzdem die Meldung nicht rausgebracht
                    hat.  Gut das es da die Bilder nicht laden konnte kann ich ja nachvollziehen
                    aber die Meldung war ja außerhalb der funktion Vorladen().

                    Danke für die Hilfe

                    Toshi

  2. wiedermal ein Preload Problem. Für mein Navigation (Rollover) habe ich die Bilder im <script> direkt auf der Website geschrieben und eingebunden.

    frage vorweg: warum nicht css rollovers? javascript ist doch so wenig barrierefrei ;) zudem gehts mit css viel problemloser und ohne preload

    http://www.wellstyled.com/css-nopreload-rollovers.html

    1. Hallo suit,

      ich stimme dir zu, Javascript sollte man nur nehmen, wenn es anders nicht geht bzw. als Ergänzung. Aber warum ...

      ... javascript ist doch so wenig barrierefrei ;)

      Ich glaube, dass man sowohl mit als auch ohne Javascript problemlos barrierefreie und barrierenbehaftete Seiten erstellen kann. Die Fehler werden eher im HTML/CSS-Bereich gemacht.

      Gruß, Jürgen

    2. Warum nicht mit CSS. Hmm. Zum Einem verändert sich bei mir
      das Hintergrundbild und die Schrift bekommt eine rote Umrandung.

      Ich habe mal jetzt öfters im Internet gesucht habe aber entweder die
      Veränderung des Bildes gefunden oder der Schrift. Dabei war aber auch keine
      Umrandung möglich. Wenn du mir helfen kannst mit dem Problem das in css zu
      machen würde ich das lieber tun.

      wiedermal ein Preload Problem. Für mein Navigation (Rollover) habe ich die Bilder im <script> direkt auf der Website geschrieben und eingebunden.

      frage vorweg: warum nicht css rollovers? javascript ist doch so wenig barrierefrei ;) zudem gehts mit css viel problemloser und ohne preload

      http://www.wellstyled.com/css-nopreload-rollovers.html

  3. Danke an alle.

    Das Problem scheint gelöst zu sein!!
    Ich weiß nicht genau an was es vorhin gelegen hat. Ich hatte jetzt die
    Variablen von lokalen zu globalen geändert und dann hat es funktioniert.

    Jetzt bleibt natürlich die frage wieso die Meldung "Bin am Laden..." vorhin
    nicht funktioniert hat, da es ja sowieso außerhalb der Funktion Vorladen()
     war?

    Ist mir aber jetzt auch nicht so wichtig da das Hauptproblem ja gelöst ist.

    Nochmal danke an alle.

    Toshi