Sascha: Preload von Grafiken ...

Hallo ....

Nachdem man mir bei meinem ersten Problem nicht helfen konnte (ein aktives Fenster ohne Browsernachfrage (J/N) zu schließen ..) versuche ich es mal mit einem neuen...

Ich versuche gerade ein Preload-Script zum laufen zu bekommen ... (hier ein Auszug mit dem Problem)

//Bilderarry für den Preload
var pics = new initArray

(
"sublog2.jpg",
"synstr.jpg",
"synlog3d.jpg");

//Zweite URL hier einfügen
function transfer(param) {
  location.href = "preload2.html";
}

function done()

Wie baue ich nun hier eine zweite bzw. dritte URL ein ?

Damit wäre mein Problem bereits gelöst, sicherlich kein Problem für jemanden , der Java kennt ....

Dennoch noch zwei Fragen zum Preloaden ..

1. Müßen die (nachfolgenden) Seiten auch ein Script
   enthalten , um auf die per Preload geladenen Bilder
   zugreifen zu können ?

2. Kann mann außer Grafiken auch anderes vorwegladen ?
   (z.b. Midi‚s und größere HTML Seiten ?)

Auch wenn ich hier bisher nur Fragen und keine Antworten
gegeben habe, so wäre ich für Hilfe dennoch dankbar.

Bye ... Sascha

  1. Hi,

    Nachdem man mir bei meinem ersten Problem nicht helfen konnte (ein aktives Fenster ohne Browsernachfrage (J/N) zu schließen ..) versuche ich es mal mit einem neuen...

    tja, 'tschuldigung - aber wenn etwas unmöglich ist, hilft auch der beste Profi nicht ;-)

    Ich versuche gerade ein Preload-Script zum laufen zu bekommen ... (hier ein Auszug mit dem Problem)

    //Bilderarry für den Preload
    var pics = new initArray

    (

    »»  "sublog2.jpg",
    »»  "synstr.jpg",
    »»  "synlog3d.jpg");

    //Zweite URL hier einfügen
    function transfer(param) {
      location.href = "preload2.html";
    }

    function done()

    Wie baue ich nun hier eine zweite bzw. dritte URL ein ?

    Höh? Ich sehe hier absolut keinen Preload. Du definierst ein Array mit ein paar Strings, die man bei Bedarf als Datei interpretieren kann, und Du hast eine Funktion, der Du einen Parameter übergibst, der nicht ausgewertet wird, und die eine neue Seite über die aktuelle lädt. Wenn Du wissen willst, wie man mit z.B. transfer("seite.html") die angegebene Seite laden kann:

    function transfer(param) {
      location.href = param;
    }

    Damit wäre mein Problem bereits gelöst, sicherlich kein Problem für jemanden , der Java kennt ....

    Mit Java hat das ganze hier nicht das geringste zu tun... ;-) (Hint: Java ist nicht JavaScript!)

    Dennoch noch zwei Fragen zum Preloaden ..

    1. Müßen die (nachfolgenden) Seiten auch ein Script
         enthalten , um auf die per Preload geladenen Bilder
         zugreifen zu können ?

    Nein. Die Grafiken werden in den Browsercache geladen und stehen dort bei jedem Aufruf zur Verfügung.

    1. Kann mann außer Grafiken auch anderes vorwegladen ?
         (z.b. Midi‚s und größere HTML Seiten ?)

    Seiten kannst Du in einen unsichtbaren Frame laden (am besten nur solche, die kein JavaScript ausführen, denn wenn z.B. ein PopUp geöffnet werden soll...)
    Ob das mit MIDIs geht weiß ich nicht, aber Du kannst es ja auch über "mid = new Image(); mid.src = 'midi.mid';" versuchen. Theoretisch sollte die Datei in den Cache geladen werden.

    Auch wenn ich hier bisher nur Fragen und keine Antworten
    gegeben habe, so wäre ich für Hilfe dennoch dankbar.

    Hier sind selbstverständlich auch Fragen gern gesehen ;-)

    Cheatah

  2. Hallo,

    Nachdem man mir bei meinem ersten Problem nicht helfen konnte (ein aktives Fenster ohne Browsernachfrage (J/N) zu schließen ..)

    Das liest sich wie ein Vorwurf. Ist es einer?
    Wieso soll jemand eine Loesung fuer etwas parat haben, was nicht geht?
    Diese Meldung, die Dich stoert, hat naemlich ihren Sinn, wurde eingefuehrt mit Navi3.01.
    Vorher war es moeglich.
    Ergebnis: der gesamte Browser konnte geschlossen werden, wenn nur dieses eine Fenster da war. Anderenfalls war zumindest die History des Benutzers weg.
    Findest Du nicht, dass der das Recht hat, selbst ueber diese Dinge zu entscheiden?
    Ich schon.

    Zu Deinem neuen Problem hast Du inzwischen eine Antwort, brauch ich also nix mehr zu schreiben.

    Christine

    1. Das liest sich wie ein Vorwurf. Ist es einer?
        
         Nein ... wieso auch ... ich erwarte keine Antwort,
         sondern erhoffe eine.... also niemals ein Vorwurf!

      Findest Du nicht, dass der das Recht hat, selbst  
      ueber diese Dinge zu entscheiden?
      Ich schon.

      Ja ... schon recht .. aber wenn mann durch Fenster
         Nr.1 ein Fenster Nr. 2 (Aussehen wie gewünscht)
         aufruft und Fenster Nr. 1 keinen weiteren
         Informationswert hat ... ist es nur ein weiteres
         Fenster in der Taskleiste ....

      Zu Deinem neuen Problem hast Du inzwischen eine
      Antwort, brauch ich also nix mehr zu schreiben.

      Nicht gerade eine Antwort, aber mehr Info‚s ..
         Logischerweise konnte mann in diesem AUSZUG kein
         Preloaden erkennen ... es ist halt nur ein Auszug
         gewesen ...

      Mein Problem lag (und liegt auch noch) genau hier:

      //Zweite URL hier einfügen
      function transfer(param) {
      location.href = "preload2.html";
      }

      Es ist ein fertiges Script gewesen ...
         schaffe es allerdings nicht die zweite Url bzw.
         weitere einzugeben ...

      Derzeit liest nur Seite 1 (Preload2.html) die
         Grafiken aus dem Cache ... folgende Seiten
         allerdings nicht mehr...

      Vielleicht kannst du ja doch noch helfen...

      Sorry , auch auf die Gefahr hin das jetzt alle
         böse werden, weil diese Message etwas umfangreicher
         wird, werde ich hier das gesamte Script posten...
         Vielleicht versteht man mich dann besser als
         nur mit einem Auszug davon ...

      <script language="JavaScript">
      <!--
      function initArray() {
      this.length = initArray.arguments.length;
      for (var i = 0; i < this.length; i++) {
        this[i] = initArray.arguments[i];
      }
      }

      //Bilderarry für den Preload
      var pics = new initArray

      (
      "sublog2.jpg",
      "synstr.jpg",
      "synlog3d.jpg");

      //Zweite URL hier einfügen
      function transfer(param) {
        location.href = "preload2.html";
      }

      function done()
      {
      if (vers < 1.1)
        transfer();
      else
        commence_loading();
      }

      function commence_loading() {
      for (g=0;g<pics.length;g++)
        eval('document.preload'+g+'.src = "'+pics[g]+'";');
      }

      // Preload der Statusbar Images
      if (vers >= 1.1) {
      blue = new Image();
      blue.src = "blue.gif";
      black = new Image();
      black.src = "black.gif";
      }

      var loaded = new initArray(0);
      for (h=0;h<pics.length;h++)
      loaded[h] = 0;
      num_loaded = 0;

      function update(num) {
      loaded[num]++;
      if (loaded[num] == 2) {
        if (vers < 1.1)
         document.stats.status.value += "";
        else
         eval('document.status'+num_loaded+'.src = "blue.gif";');
        num_loaded++;
        if (num_loaded == pics.length)
         transfer();
      }
      }
      // -->
      </script>

      Für alle bisherigen Antworten (und auch folgende?)
         möchte ich mich auf jeden Fall schon einmal bedanken!

      bye ... Sascha

      1. Hi,

        Mein Problem lag (und liegt auch noch) genau hier:

        //Zweite URL hier einfügen
        function transfer(param) {
        location.href = "preload2.html";
        }

        ich weiß leider immer noch nicht genau, _welches_ Problem Du dabei hast. Geht es darum, hier einen Parameter zu übergeben (<a href="javascript:transfer('seite.html');">) und dann eben diese übergebene Seite zu laden? Dann ersetze einfach "preload2.html" durch param (ohne Anführungszeichen).

        Sorry , auch auf die Gefahr hin das jetzt alle
           böse werden, weil diese Message etwas umfangreicher
           wird, werde ich hier das gesamte Script posten...

        *grrrrrrrrr* :-)
        Nein, normalerweise sollte man die geposteten Zeilen soweit wie möglich reduzieren. Das hast Du gemacht (vorheriges Posting), und es war nicht genug. Drum verzeihen wir das mal :-)

        function commence_loading() {

        »»  for (g=0;g<pics.length;g++)

        eval('document.preload'+g+'.src = "'+pics[g]+'";');
        }

        Hm, ich sehe da nirgendwo ein
        eval('var preload'+g+' = new Image();');
        Das könnte aber sinnvoll sein, und zwar direkt vor der anderen eval()-Zeile.

        In dem Script wird an zwei Stellen transfer() aufgerufen, ohne Parameter. Ich vermute, Du willst in jedem Fall zu einer eigenen Zeile verzweigen? In dem Fall kannst Du den Befehl eigentlich auch direkt durch
        location.href = "seite.html";
        ersetzen und die jeweils gewünschte Seite angeben.

        Hilft das weiter?

        Cheatah

        1. Hallo ...

          Ich sehe schon .. heute wirds ne lange Nacht ...

          Hm, ich sehe da nirgendwo ein
          eval('var preload'+g+' = new Image();');
          Das könnte aber sinnvoll sein, und zwar direkt vor
          der anderen eval()-Zeile.

          werde es mal einfügen ... danke ...

          In dem Script wird an zwei Stellen transfer() aufgerufen, ohne Parameter. Ich vermute, Du willst in jedem Fall zu einer eigenen Zeile verzweigen? In dem Fall kannst Du den Befehl eigentlich auch direkt durch
          location.href = "seite.html";
          ersetzen und die jeweils gewünschte Seite angeben.

          »»

          Auch dieses werde ich mal probieren ....

          Hilft das weiter?

          Ich hoffe es ... also ersteinmal danke Cheatah ..!
            
             Wenn nicht ... versuche ich demnächst noch einmal
             mein Glück hier ....

          Bin schon froh, wenn‚s mit den Grafiken klappen
             würde ... dann stelle ich mich dem Problem der
             Midi, Applet und Html Files..

          Bye ... Sascha

      2. Hallo,

        Das liest sich wie ein Vorwurf. Ist es einer?
           Nein ... wieso auch ... ich erwarte keine Antwort,
           sondern erhoffe eine.... also niemals ein Vorwurf!

        Prima.

        Ja ... schon recht .. aber wenn mann durch Fenster
           Nr.1 ein Fenster Nr. 2 (Aussehen wie gewünscht)
           aufruft und Fenster Nr. 1 keinen weiteren
           Informationswert hat ...

        Dann erscheint ja auch die Frage nicht, und Du darfst es einfach zumachen.

        Christine

  3. Hallo,

    Grafiken preloaden. Warum so kompliziert, wenns auch einfach geht. Bei Javascript ist man immer auf die "Gunst" des Users angewiesen (das dieser das auch eingeschaltet hat)..
    Eine Alternative stellt die Möglichkeit dar Grafiken direkt mit dem IMG-Tag zu laden aber nur als ein Byte großes Pixel auszugeben.
    <img src="irgendwas.gif" width="1" height="1">
    Und diese kann man irgendwo verstecken. Das ist nicht schwer (notfalls in einem 0 Pixel breiten Frame). Die Clou ist, die Bilder werden im Browser-Cache gehalten und beim nächsten Zugriff per IMG-Tag blitzschnell geladen.

    Taugt vielleicht nicht für alle Anwendungszwecke, aber ist doch recht oft eine clevere Alternative.

    Gruß
      Michael

    1. Hallo  Michael,

      Bei Javascript ist man immer auf die "Gunst" des Users angewiesen...
      Clou ist, die Bilder werden im Browser-Cache gehalten...

      ist hier doch nicht anders, es gibt doch reichlich Empfehlungen den Cash
      auf null zu setzen um andere Probleme zu umgehen.

      Taugt vielleicht nicht für alle Anwendungszwecke,
      aber ist doch recht oft eine clevere Alternative.

      ist es zweifelsohne!

      Klaus