Javascript: Ausgabe in anderen Frame? Help plz!

AX-Turbo

Commodore Special
Mitglied seit
06.08.2002
Beiträge
413
Renomée
2
Hi!

Ich möchte mit diesem Script die X- und Y-Koordinaten des Mauszeigers anzeigen lassen. Funktioniert schön, und die Koordinaten werden per < form > im selben Fenster angezeigt, in dem auch das Java-Script eingebaut ist. Aber was tun, wenn ich diese X/Y-Werte in einem anderen Frame angezeigt haben möchte? Hab´ keinen großen Plan von Java, deshalb "Danke" für jeden verständlichen Tip! :)

<form name="Show">
X <input type="text" name="MouseX" value="0" size="4"><br>
Y <input type="text" name="MouseY" value="0" size="4"><br>
</form>

<script language="JavaScript1.2">
<!-- Begin
var IE = document.all?true:false;
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;
var tempX = 0;
var tempY = 0;
function getMouseXY(e) {
if (IE) { // grab the x-y pos.s if browser is IE
tempX = event.clientX + document.body.scrollLeft;
tempY = event.clientY + document.body.scrollTop;
}
else { // grab the x-y pos.s if browser is NS
tempX = e.pageX;
tempY = e.pageY;
}
if (tempX < 0){tempX = 0;}
if (tempY < 0){tempY = 0;}
document.Show.MouseX.value = tempX;
document.Show.MouseY.value = tempY;
return true;
}
// End -->
</script>
 
Da hast du viele M&#246;glichkeiten - zun&#228;chst aber der obligate Satz, dass JavaScript im Prinzip nichts mit Java zu tun hat :)

Aber zu deiner Frage (ich greife in den Beispielen immer auf ein Element 'test' mittels getElementById zu)

Wenn das Script im FRAMESET aufgerufen wird, kannst du mit dem window object auf die Frames auf drei Arten zu greifen.
1. &#252;ber den Index (0, 1, 2 - die Frames werden durchnummeriert
==> window.frames[0].getElementById("test") == greift auf Element "test im ersten Frame zu)

2. &#252;ber den Namen
==> window.frame_eins.getElementById("test") == greift auf Element "test" im Frame mit dem name-Attribute "frame_eins" zu

3. &#252;ber den Namen (aber mehr Tipparbeit via Frame-Kollektion)

==> window.frames["frame_eins"].getElementById("test") == das gleiche wie oben

Aber nochmals obige L&#246;sung funktioniert NUR, wenn das Script im Frameset selbst aufgerufen wird...
--------------------------------------------------------------------------------


Wenn dies nicht der Fall ist - und beispielsweise von 'frame_zwei' auf 'frame_eins' zugegriffen werden muss, kannst du dich &#252;ber die DOM Sturktur(Hierarchie) mit 'parent' durchs Dokument 'hangeln' und auf einen anderen Kind-Knoten zugreifen.

Beispiel (Script wird in frame_zwei aufgerufen und greift auf frame_eins zu)

1. &#252;ber Index

==> parent.frames[0].getElementById("test") == greift auf Element "test" im ersten Frame zu.

2. &#252;ber das Name-Attribut

==> parent.frame_eins.getElementById("test") == greift auf Element "test" im Frame mit dem name-Attribute "frame_eins" zu

Achtung: Um aus einem verschachtelten Frame (Frame im Frame) heraus, auf ein anderes Frame im Frameset zuzuzgreifen, musst du parent.parent.frame.... verwenden, oder alternativ mittels parent.top.frame.... direkt aufs oberste Frameset zugreifen

----------------------------------------



Also Fazit: Greifst du vom Frameset aus auf die einzelnen Frames zu, dann mittels dem window - Objekt... Wenn man von einem einzelnen Frame heraus auf einen Nachbar zugreifen will, dann &#252;ber den Elternknoten (parent) und DOM gehen.

Ich hoffe es ist einigermassen verst&#228;ndlich ^^
 
Zuletzt bearbeitet:
Zurück
Oben Unten