Web-TorMedlem sedan nov. 200011 794 inlägg
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
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
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
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
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
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
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
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
Var ska jag lägga koden i punkt 2?
Peter SMedlem sedan dec. 20025 484 inlägg
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
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
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
Å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