Adressieren von Frames über Frameset hinaus
Max Richter
- javascript
0 Detlef G.0 Max Richter0 Max Richter0 Detlef G.0 frankx
Hallo!
Ich habe eine Seite, in der es 2 ineinandergebettete Framesets gibt:
1.Frameset
_topFrame
_leftFrame
_mainFrame
2.Frameset
_head
_inhalt
nun verwende ich schon ein Java-Script für alternative Grafiken im ersten Frameset. Und zwar um die Menügrafiken des leftFrame auch über den mainFrame steuern zu können (z.B. bei hovern über Links)
Das klappt gut mit:
parent.leftFrame.document.image1.src = eval(name + "alton.src");
und so weiter.
Jetzt bin ich in der Situation, dies auch aus dem _head Frame machen zu müssen (für ein zurück-Link).
Aber mit "parent" kann man ja nur innerhalb eines Frameset adressieren.
wie adressiere ich _leftFrame jetzt von head aus?
Danke
Hallo Max
wie adressiere ich _leftFrame jetzt von head aus?
Zugriff auf verschachtelte Fensterobjekte
Auf Wiederlesen
Detlef
Hallo Max
wie adressiere ich _leftFrame jetzt von head aus?
Zugriff auf verschachtelte Fensterobjekte
Auf Wiederlesen
Detlef
Vielen Dank, im Prinzip ist das genau das, was ich gesucht habe.
Allerdings habe ich das jetzt umgesetzt:
Noch mal meine Frameset-Verschachtelung:
1.Frameset
_leftFrame
_topFrame
_mainFrame
->2.Frameset
_head
_inhalt
also habe ich aus _head nun herausadressiert:
parent.parent.leftFrame.document...
auch versucht
top.leftFrame.document....
Definiert sind eigentlich imageon, imageoff, imagestay. Beim Link selbst in _head soll verschiedenes bei onmousehover, onmouseout und onclick passieren. Jetzt passiert bei mouseout nur etwas, aber auch nicht das, was ich will. Die Funktionen und der Eintrag in <body></body> sind gleich geblieben.
Naja, immerhin tut sich ja was...
Hier ist das vollständige Script:
<script type="text/JavaScript">
<!--
if (navigator.appVersion.indexOf("2.") != -1){
check = false;
}
if ((navigator.appVersion.indexOf("3.") != -1) && (navigator.appName.indexOf("Explorer") != -1)){
check = false;
}
else {
check = true;
}
image1alt = new Image();
image1alt.src = "Bilder/Neues_Design/js_home_aus.gif";
image1alton = new Image();
image1alton.src = "Bilder/Neues_Design/js_home_switch.gif";
image1altstay = new Image();
image1altstay.src = "Bilder/Neues_Design/js_home_an.gif";
function imageon(name) {
parent.parent.leftFrame.document.image1.src = eval(name + "alton.src");
}
function imageoff(name) {
parent.parent.leftFrame.document.image1.src = eval(name + "alt.src");
}
function imagestay(name) {
parent.parent.leftFrame.document.image1.src = eval(name + "altstay.src");
}
NN3 = true;
function on(name) {
if (check == true){
imageon(name);
}
}
function off(name) {
if (check == true){
imageoff(name);
}
}
function stay(name){
if (check == true){
imagestay(name);
}
}
// -->
</script>
Und beim link dann:
<a id="bio_head" name="bio_head" href="../home.html" onmouseover="on('image1');" onmouseout="off('image1');" onClick="stay('image1');" target="mainFrame">zurück</a>
Es ist das gleiche Script, welches ich in _mainFrame nutze, nur das da natürlich nur
parent.leftFrame.document......
steht
Da funktioniert es...
Ach ja, zum Schluss:
Natürlich ist im _leftFrame ein entsprechendes image1 definiert!
Was ist falsch?
Was ich nicht verstehe ist:
Warum funktioniert das Script nicht mehr, wenn ich nur die Adressierung verändere?
Wieso funktioniert:
function imageon(name) {
parent.parent.leftFrame.document.image1.src = eval(name + "alton.src");
}
function imageoff(name) {
parent.parent.leftFrame.document.image1.src = eval(name + "alt.src");
}
function imagestay(name) {
parent.parent.leftFrame.document.image1.src = eval(name + "altstay.src");
}
und folgendes
in _mainFrame
aber nicht
parent.parent.leftFrame
oder
top.leftFrame
und der Rest???
Das ist doch unlogisch, ich habe doch nichts verändert!
Hallo Max
if (navigator.appVersion.indexOf("2.") != -1){
...
if ((navigator.appVersion.indexOf("3.") != -1) && (navigator.appName.indexOf("Explorer") != -1)){
...
Warum fragst du hier Browserversionen ab, statt abzufragen ob der Browser
die benötigten Objekte kennt?
parent.parent.leftFrame.document.image1.src = eval(name + "alton.src");
...
parent.parent.leftFrame.document.image1.src = eval(name + "alt.src");
...
parent.parent.leftFrame.document.image1.src = eval(name + "altstay.src");
Suche besser eine Möglichkeit ohne eval.
Was ist falsch?
Was sagt die Javascript-Konsole?
Was genau fnktioniert nicht?
Wird das jeweilige Script nicht aufgerufen, oder findet es die Bildobjekte
nicht?
(Einfügen von alert('hier kommt das Script hin');
hift oft.)
Ich bekomme das anhand deiner Angaben nicht wirklich zusammengesetzt.
Kannst du dein Beispiel online stellen, damit es komplett sichtbar ist.
Auf Wiederlesen
Detlef
Hellihello Max,
mit top.framename kommst du vermutlich besser zurecht, als da immer die parentse raufzuhübbeln.
ein alert(top.framexyz) oder alert(top.framexyz.document.getElementsById("body")[0].innerHTML) bringt vielleicht auch Erhellung.
frankx
Hallo frankx
Hellihello Max,
Seit wann heiße ich Max?
Auf Wiederlesen
Detlef
Hellihello Detlef,
seit wann heißt Du Max?
Gruß,
frankx