Verlinkung in ein anderes Frame!
Sven
- javascript
0 Dieter Raber0 Sven0 Dieter Raber0 Sven
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
Hallo Sven,
Ohne einen Blick in den Quellcode kann man dazu nichts sagen.
Gruß,
Dieter
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>
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
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
Hallo Sven,
self.location.replace
Gruß,
Dieter
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
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
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
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
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
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
_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
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