Web-TorMedlem sedan nov. 200013 890 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 198 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. 200013 890 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 198 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. 200013 890 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 198 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. 200013 890 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 483 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. 200013 890 inlägg Var ska jag lägga koden i punkt 2?
Peter SMedlem sedan dec. 20025 483 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. 200013 890 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 483 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. 200013 890 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!