JavaScript und Frames

JavaUncle

Mitglied
Guten Tag

Ich habe da mal eine Frage bzgl. Frames und JavaScript. Angenommen man hat eine Datei die ein Frameset mit 3 Dokumenten definiert. Nun möchte ich ein Script schreiben, welches an diversen Stellen in der Website (damit meine ich das Frameset mit seinen 3 Frames) Hilfe-Overlays per Ajax einblenden soll, wenn man auf bestimmte Texte klickt.

Das JavaScript soll ein einer Stelle eingebunden werden und sich dann auf die gesamte Website auswirken, wo es im Quellcode nach bestimmten Texten sucht und diese anklickbar macht.

Mir leuchtet ein dass das JavaScript ohne weiteres nur in dem Frame aktiv werden kann, wo es eingebunden wurde, aber ich weis auch das man sich irgendwie zum "Parent" hangeln kann um an die anderen Frames zu kommen. Da wäre dann nur noch das kleine Problem mit dem Overlay, der durchaus auch mal so "geschickt" platziert sein kann das er über 2 Frames geht...genau das geht ja normalerweise nicht.

Die Frage nach dem Roman:
1) kann man dynamisch feststellen ob das Dokument in einem Frameset läuft, und alle anderen Frames im Browserfenster ermitteln?

2) wie könnte man ein Overlay realisieren das 2 oder mehr Frames überlagern kann?

Meine Vermutung zu 2: Man müsste per JavaScript das Frameset in einem IFrame unterbringen. Das Dokument in dem vorher das Frameset definiert war muss so umgeschrieben werden dass das gesamte Frameset in einem Iframe läuft. Das JavaScript wird in einem beliebigen Frame eingebunden und hängt sich dann von alleine an das "richtige" Dokument, also das, wo das Iframe läuft.

Was meint Ihr dazu?

JavaUncle
 
Zu 1.) Du kannst dynamisch alle Frames ermitteln, auch rekursiv.
Hier ein Beispiel (ist jedoch ungetestet):
Code:
function fetchFrames( objWindow )
{
	var arrReturn = [];
	if( objWindow.frames.length === 0 )
		return arrReturn;
	
	
	var elFrame = null;
	for( var i = 0; i < objWindow.frames.length; i++ )
	{
	  elFrame = objWindow.frames[i];
	  arrReturn.concat( fetchFrames(elFrame.contentWindow) ); 
	}	
	
	return arrReturn;
}

var arrFrames = fetchFrames(window.top);

Zu 2.) Overlays über Frames an sich geht nicht, aber dein Ansatz ist schon mal der Richtige. Die Overlays müssten dann auch in dem selben Document erstellt werden, in dem du dein Iframe untergebracht hast. Jedoch hast du ein Problem beim scrollen.
 
Zuletzt bearbeitet:
Hi, danke für den Tipp! Leider funktioniert die Funktion nicht. Firebug stoppt bei
Code:
if( objWindow.frames.length === 0 )
und sagt nichts dazu. objWindow ist "undefined".
Der MSIE sagt "frames" ist unbekannt...

Gruß
Laura
 
da fehtl auch ein kleines, magisches Wörtchen... "function" und das gleich in der ersten Zeile im o.g. Code-Block.
 
@ Laura & Chainy: Natürlich muss da noch "function" vor. Ich hatte es auch so, habe es nur versehentlich falsch hier rein kopiert...
 

Neue Beiträge

Zurück