Sven: Verlinkung in ein anderes Frame!

Hallo zusammen,

ich habe hier ein Preloader Script, dass nach dem Vorladen eine neue Seite aufmachen soll. Eine Seite nach dem vorladen ist bereits so definiert:

var nachvorladen = "index1.html"

Ich habe versucht die Variable so zu verändern, dass er in ein anderes Frame verlinkt:

var nachvorladen = "index1.html",target="_blank"

Das funktioniert aber nicht. Wie muss ich dass den definieren?

Viele Grüße
Sven

  1. Hallo Sven,

    Ohne einen Blick in den Quellcode kann man dazu nichts sagen.

    Gruß,

    Dieter

    1. Hallo Sven,

      Ohne einen Blick in den Quellcode kann man dazu nichts sagen.

      Gruß,

      Dieter

      Okay, hier der Quellcode (ist von drweb.de):

      <script language=JavaScript1.2>
      <!-- begin hiding
      startingColor = new Array() // <-- NICHT VERÄNDERN!
      endingColor = new Array() // <-- NICHT VERÄNDERN!

      // Hier deine Grafiken rein:
      var yourImages = new Array("acrobat.jpg","anfahrt.jpg","anfahrt_gross.jpg","anfahrt_klein.jpg","downloads.jpg","drucken.jpg","home.jpg","home_beratung1.jpg","home_beratung.jpg","home_bereiche.jpg","home_entwicklung1.jpg","home_entwicklung.jpg","home_oberflaeche1.jpg","home_oberflaeche.jpg","home_partner.jpg","home_platzhalter1.jpg","home_platzhalter2.jpg","home_pruefung1.jpg","home_pruefung.jpg","home_reinigung1.jpg","home_reinigung.jpg","home_schulung1.jpg","home_schulung.jpg","home_textil1.jpg","home_textil.jpg","impressum.jpg","klein_reinigung.jpg","klein_textile.jpg","kontakt.jpg","kontaktformular.jpg","logo2.jpg","logo3.jpg","pdf.gif","seminarkalender.jpg","siegel.jpg") // Ersetzen und erweitern durch deine Grafiken
      var locationAfterPreload = "index1.html"// Hier den Pfad zur Seite die nach dem Vorladen geladen werden soll
      var preloadbarWidth = 350 // Länge des Balkens
      var preloadbarHeight = 15 // Höhe desselbigen
      var backgroundOfGradient = "#000000"

      // Farbe mir der der Balken beginnt! Gib erste, dritte und fünfte Zahl/Buchstaben der Farbe an
      startingColor[0] = "B"
      startingColor[1] = "B"
      startingColor[2] = "B"

      // Wie oben nur die Farbe mit dem es endet
      endingColor[0] = "F"
      endingColor[1] = "E"
      endingColor[2] = "0"

      var gap = 7 // mind. 2! verändern, wenn es nen JS-Error gibt.

      // NIX MEHR VERÄNDERN

      if (!document.all) location.replace(locationAfterPreload)
      var a = 10, b = 11, c = 12, d = 13, e = 14, f=15, i, j, ones = new Array(), sixteens = new Array(), diff = new Array();
      var convert = new Array("0","1","2","3","4","5","6",
      "7","8","9","a","b","c","d","e","f"), imgLen = yourImages.length;
      var loaded = new Array(), preImages = new Array(), currCount = 0, pending = 0, h = 0, hilite = new Array(), cover = new Array();
      var num = Math.floor(preloadbarWidth/gap);
      for (i = 0; i < 3; i++) {
      startingColor[i] = startingColor[i].toLowerCase();
      endingColor[i] = endingColor[i].toLowerCase();
      startingColor[i] = eval(startingColor[i]);
      endingColor[i] = eval(endingColor[i]);
      diff[i] = (endingColor[i]-startingColor[i])/num;
      ones[i] = Math.floor(diff[i]);
      sixteens[i] = Math.round((diff[i] - ones[i])*15);
      }
      endingColor[0] = 0;
      endingColor[1] = 0;
      endingColor[2] = 0;
      i = 0, j = 0;
      while (i <= num) {
      hilite[i] = "#";
      while (j < 3) {
      hilite[i] += convert[startingColor[j]];
      hilite[i] += convert[endingColor[j]];
      startingColor[j] += ones[j];
      endingColor[j] += sixteens[j];
      if (endingColor[j] > 15) {
      endingColor[j] -= 15;
      startingColor[j]++;
      }
      j++;
      }
      j = 0;
      i++;
      }
      function loadImages() {
      for (i = 0; i < imgLen; i++) {
      preImages[i] = new Image();
      preImages[i].src = yourImages[i];
      loaded[i] = 0;
      cover[i] = Math.floor(num/imgLen)*(i+1)
      }
      cover[cover.length-1] += num%imgLen
      checkLoad();
      }
      function checkLoad() {
      if (pending) { changeto(); return }
      if (currCount == imgLen) { location.replace(locationAfterPreload); return }
      for (i = 0; i < imgLen; i++) {
      if (!loaded[i] && preImages[i].complete) {
      loaded[i] = 1; pending++; currCount++;
      checkLoad();
      return;
      }
      }
      setTimeout("checkLoad()",10);
      }
      function changeto() {
      if (h+1 > cover[currCount-1]) {
      var percent = Math.round(100/imgLen)*currCount;
      if (percent > 100) while (percent != 100) percent--;
      if (currCount == imgLen && percent < 100) percent = 100;
      defaultStatus = "Lade Bild " + currCount + " von " + imgLen + " Bildern [" + percent + "%].";
      pending--;
      checkLoad();
      return;
      }
      eval("document.all.cell" + (h+1) + ".style.backgroundColor = hilite[h]");;
      h++;
      setTimeout("changeto()",1);
      }
      defaultStatus = "Lade Bild 0 von " + imgLen + " Bildern [0%]."
      // end hiding -->
      </script>

      1. Hallo Sven,

        var locationAfterPreload = "index1.html"// Hier den Pfad zur Seite die nach dem Vorladen geladen werden soll

        if (!document.all) location.replace(locationAfterPreload)
        if (currCount == imgLen) { location.replace(locationAfterPreload);

        Anstatt location.replace(locationAfterPreload) musst du window.open(locationAfterPreload) nehmen.

        Schau dir in Selfhtml genau an, wie location.replace() und window.open() funktionieren, solltest Du noch Fragen haben, poste bitte nur _relevanten_ Quellcode.

        Gruß,

        Dieter

        1. Anstatt location.replace(locationAfterPreload) musst du window.open(locationAfterPreload) nehmen.

          Okay, ich danke Dir! Das funktioniert schonmal ganz gut. Wenn ich aber die danach folgende Seite im selben Fenster, aber ohne die bereits vorhandenen Frames aufmachen will (wie es mit "_top" definiert wird) wie kann ich das dann machen? Habe schon in der Suche bei "window" nachgeguckt, aber leider nichts gefunden.

          Viele Grüße
          Sven

          1. Hallo Sven,

            self.location.replace

            Gruß,

            Dieter

            1. self.location.replace

              Hallo Dieter,

              das funktioniert aber leider nicht, hab es gerade probiert. Ich rufe das Script aus dem mittleren (von 3 Frames) auf. Die danach folgende Seite soll ganz ohne diese Frames aufgebaut werden.

              Viele Grüße
              Sven

              1. Hallo Sven,

                Es waere hilfreich, wenn du einmal eine genauere Fehlerbeschreibung und eine praezise Erklaerung dessen, was du erreichen willst, posten wuerdest. So wie ich dich verstehe, hast du eine Seite, die erst ein paar Bilder vorlaedt und dann ein Fenster oeffnet, in dem andere Inhalte in einem Frameset dargestellt werden. Offenbar willst Du aber etwas voellig anderes erreichen.

                Gruß,

                Dieter

                1. Es waere hilfreich, wenn du einmal eine genauere Fehlerbeschreibung und eine praezise Erklaerung dessen, was du erreichen willst, posten wuerdest.

                  Also ich habe zuerst eine Seite mit 3 Frames (im oberen und unteren Frame sind Bilder und Texte) in der Mitte (der mittlere Frame) wird das Script zum vorladen der Bilder ausgeführt. Nach dem vorladen der Bilder kommt eine komplett neue Seite mit 3 anderen Frames. Diese (index1.html) soll zwar im selben IE eingeladen werden, aber ohne die davor definierten Frames. Dies geht ja (zumindest in HTML) mit der Fukntion target="_top". Nur leider weiß ich nicht, wie ich das im JavaScript definieren kann.

                  Viele Grüße
                  Sven

                  1. hi,

                    Dies geht ja (zumindest in HTML) mit der Fukntion target="_top". Nur leider weiß ich nicht, wie ich das im JavaScript definieren kann.

                    Das steht unter http://de.selfhtml.org/javascript/objekte/frames.htm#allgemeines

                    gruß,
                    wahsaga

                    --
                    /voodoo.css:
                    #GeorgeWBush { position:absolute; bottom:-6ft; }
                    1. Das steht unter http://de.selfhtml.org/javascript/objekte/frames.htm#allgemeines

                      Danke, ich habe mir das gerade mal angeguckt. Leider komme ich da aber trotzdem nicht viel weiter. Ich müsste dann ja erst alle 3 Frames schließen und die neue Seite aufzubauen. Wie soll das gehen?

                      Viele Grüße
                      Sven

                      1. hi,

                        Das steht unter http://de.selfhtml.org/javascript/objekte/frames.htm#allgemeines

                        Danke, ich habe mir das gerade mal angeguckt. Leider komme ich da aber trotzdem nicht viel weiter. Ich müsste dann ja erst alle 3 Frames schließen und die neue Seite aufzubauen.

                        Wieso solltest du die Frames "schließen" müssen? (Mal ganz abgesehen davon, dass man Frames gar nicht "schließen" _kann_.)

                        _parent bzw. _top dienen dir in HTML-Targets zum _ersetzen_ eines/aller Framesets - und auf der verlinkten Seite wird beschrieben, was die Analogons [1] in Javascript sind?

                        [1] Wie ist der Plural von Analogon? Analogi?

                        gruß,
                        wahsaga

                        --
                        /voodoo.css:
                        #GeorgeWBush { position:absolute; bottom:-6ft; }
                        1. _parent bzw. _top dienen dir in HTML-Targets zum _ersetzen_ eines/aller Framesets - und auf der verlinkten Seite wird beschrieben, was die Analogons [1] in Javascript sind?

                          Habe es jetzt hinbekommen. Mit dieser Zeile funktioniert es:

                          top.frames.location.href="index1.html"

                          Danke nochmal für die Geduld & Hilfe :-)

                          Viele Grüße
                          Shaggy1982

              2. hi,

                das funktioniert aber leider nicht, hab es gerade probiert. Ich rufe das Script aus dem mittleren (von 3 Frames) auf. Die danach folgende Seite soll ganz ohne diese Frames aufgebaut werden.

                Dann solltest du bei diesem ersten Link auf _parent oder _top zielen, um das Frameset aufzuheben. (bzw. parent oder top als Fensternamen in Javascript.)

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }