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>
13 svar · 363 visningar · startad av Web-Tor
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?
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>
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?
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.
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().
Lägg variablen state, globalt och kolla den från hjälpsidan när den laddas istället för i main.
Fattar noll.
Hur ska jag kunna kolla om föregående hjälpsida var öppen eller stängd?
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';
}
:)
Var ska jag lägga koden i punkt 2?
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.
:)
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?
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);
}
:)
Å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!
:bire