webForumDet fria alternativet

Öppna/stänga frame

13 svar · 363 visningar · startad av Web-Tor

Web-TorMedlem sedan nov. 200011 794 inlägg
#1

Jag har en sida men en hjälp-frame till höger. Framen gåt att öppna och stänga.
Från main-framen kan jag ändra vilken sida som ska visas i hjälpen.

Har man öppnat hjälpen, och sedan byter hjälpsida, kollar jag om hjälp-framen är öppen för att kunna behålla den öppen.

Kolla på det här exemplet
- Klicka på "Open" i hjälp-framen.
- Klicka på "Byt hjälpsida" i main-framen.
- Den nya hjälpsidan laddas in.
- Även om hjälpen förblir öppen så ändras länken "Close" till "Open". Varför?

yohpopsMedlem sedan feb. 20011 102 inlägg
#2

Eftersom när sidan laddas döljs Close automatiskt.

<a href="#" id="help_open" onclick="frame_opencol();">Open</a><br>
<a href="#" id="help_close" onclick="frame_closecol();" [b]style="display:none"[/b]>Close</a>
Web-TorMedlem sedan nov. 200011 794 inlägg
#3

Men i funktionen frame_opencol() kör jag ju:

helpWin.document.getElementById('help_close').style.display='block';

Dessutom så kommer "Open"-länken fram trots att jag kör funktionen frame_opencol(). Den funktionen körs ju av någon anledning innan den nya sidan laddats in, trots att koden kommer efter?

Länk till .js-filen

yohpopsMedlem sedan feb. 20011 102 inlägg
#4

Open visas alltid när du laddar om sidan.
frame_opencol() körs inte förens du klickar på Open.

Du får spara en variabel i main-framen som håller reda på om help-framen är öppen eller stängd, och när hjälp-sidan laddas kollar du om den ska vara öppen eller stängd.

Web-TorMedlem sedan nov. 200011 794 inlägg
#5

frame_opencol() körs inte förens du klickar på Open.

Den ska körs även när jag klickar på "Byt hjälpsida".
Kolla på funktionen help().

yohpopsMedlem sedan feb. 20011 102 inlägg
#6

Lägg variablen state, globalt och kolla den från hjälpsidan när den laddas istället för i main.

Web-TorMedlem sedan nov. 200011 794 inlägg
#7

Fattar noll.
Hur ska jag kunna kolla om föregående hjälpsida var öppen eller stängd?

Peter SMedlem sedan dec. 20025 484 inlägg
#8

1. Ta bort var framför state
2.

if (state == "open"){
    helpWin.document.getElementById('help_open').style.display='none';	
    helpWin.document.getElementById('help_close').style.display='block';
}

:)

Web-TorMedlem sedan nov. 200011 794 inlägg
#9

Var ska jag lägga koden i punkt 2?

Peter SMedlem sedan dec. 20025 484 inlägg
#10

Där den befintliga if-satsen är. Men jag är inte säker på att det fungerar ändå. Sannolikheten är nog stor för att du får använda onload-hanteraren i help2.html.

:)

Web-TorMedlem sedan nov. 200011 794 inlägg
#11

Har ändrat koden nu men det fungerar precis lika dåligt som tidigare... :l

Sannolikheten är nog stor för att du får använda onload-hanteraren i help2.html.

Hur? :q Som jag skrev tidigare:

Hur ska jag kunna kolla om föregående hjälpsida var öppen eller stängd?

Peter SMedlem sedan dec. 20025 484 inlägg
#12

Vi gör så här istället ;)

I frames.html:

<head><script type="text/javascript">var state="";</script></head>

help2.html:

<html>
<head>
	<script type="text/javascript" src="script.js"></script>
<head>
</body>
	<h1>help 2</h1>
	<a href="#" id="help_open" onclick="frame_opencol();">Open</a><br>
	<a href="#" id="help_close" onclick="frame_closecol();" style="display:none">Close</a>
	<script type="text/javascript">
	if (top["state"] == "open"){
		document.getElementById('help_open').style.display='none';
		document.getElementById('help_close').style.display='block';
	}
	</script>
</body>

</html>

script.js:

function help(url){
	if (helpWin.document.getElementById('help_close').style.display=="block"){
		top["state"]="open";
	}else{
		top["state"]="closed";
	}

	helpWin.location.replace(url);
}

:)

Web-TorMedlem sedan nov. 200011 794 inlägg
#13

Åh! Gamla kära top-variabler. :e

För att slippa lägga in js-kod i HTML-filerna så lade jag till det här i .js-filen:

if(typeof(window.top.state)=="undefined")
	window.top.state="";

....

function h(){
	if (window.top.state=="open"){
		document.getElementById('help_open').style.display='none';
		document.getElementById('help_close').style.display='block';
	}
}

Funktionen h() anropas sedan i onload från hjälp-sidorna. :)

Se så bra det funkar.
Tack Peter!

Peter SMedlem sedan dec. 20025 484 inlägg
#14

:bire

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb