popup.show(): Fenster verschwindet, sobald Fokus wo anders ist.

deb_ugger

Erfahrenes Mitglied
Hallo!

Ich versuche eine Ebene / ein Popup zu erzeugen, das über den eigentlichen Browserrand hinausgeht. Ich habe auch bereits eine Lösung gefunden, die dieses Verhalten unterstützt.

popup.show(iX, iY, iWidth, iHeight [, oElement])

Hier auch ein Beispielcode:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
	<title>Testseite</title>
	
<script>
/*****************************************************
* Ebenen Popup
*****************************************************/
var oPopup = window.createPopup();
function definePopup(left,top,width,height) {
	if (event.srcElement.id=="menu_test1") {
		oPopup.document.body.innerHTML = otest1.innerHTML;
		var popupBody = oPopup.document.body;
		oPopup.show(left,top,width,height,document.body);
	}
	else if (event.srcElement.id=="menu_test2"){
		oPopup.document.body.innerHTML = otest2.innerHTML;
		var popupBody = oPopup.document.body;
		oPopup.show(left,top,width,height,document.body);
	}
}
</script>
<style>
#menu_test1 {
	background-image: url(../images/menu_contacts_1.gif);
	background-repeat: no-repeat;
	position: absolute;
	left: 0px;
	top: 120px;
	width: 250px;
	height: 40px;
	cursor: hand;
}

#menu_test2 {
	background-image: url(../images/menu_files_1.gif);
	background-repeat: no-repeat;
	position: absolute;
	left: 0px;
	top: 260px;
	width: 250px;
	height: 40px;
	cursor: hand;
}
</style>
</head>

<body>
<div id="menu_test1" onClick="definePopup('-282','207','284','500');">open menu1</div>
<div id="menu_test2" onClick="definePopup('-282','407','284','300');">open menu2</div>

<div style="display:none;">
	<div id="otest1">
		<div style="border: solid 3px #000042; border-right: 0px; background-repeat: no-repeat; width:284; height:500">Seite 1</div>
	</div>
	<div id="otest2">
		<div style="border: solid 3px #000042; border-right: 0px; background-repeat: no-repeat; width:284; height:300">Seite 2</div>
	</div>
</div>
</body>
</html>

Das Problem ist jedoch: Das Fenster verschwindet, sobald ich meinen Fokus ändere und beispielsweise in das Hauptfenster klicke. Weiß wer von euch, wie man dieses Problem umgehen könnte oder kennt wer eine bessere Lösung?

Danke für die Hilfe!
mfg,
debugger
 
Zuletzt bearbeitet:
Deklariere eine Variable mit dem Wert false
Speichere beim Aufruf von "definePopup()" das Objekt "event.srcElement" in dieser Variablen. Dann überwache den onclick-Event des documents.
Rufe, wenn dieser Event feuert, eine weitere Funktion auf.
In dieser Funktion prüfe, ob die deklarierte Variable "false" ist... wenn nicht, führe einen click() darauf aus....was wiederum "definePopup()" auslöst, womit das Popup offen bleibt(oder besser gesagt sofort wieder geöffnet wird).

Wenn du das Popup schliessen willst, verwende darauf die Methode hide() ... vorher musst du die deklarierte Variable aber wieder auf "false" setzen.

Übrigens: Dass diese Sache nur im IE ab V5.5 funktioniert, ist dir aber bekannt ?!
 

Neue Beiträge

Zurück