HTML Seiten-Zustand bei Aktualisierung beibehalten

Heimwerker

Lt. Junior Grade
Registriert
Mai 2007
Beiträge
457
Hallo zusammen,

Ich habe ein Auf- und Zuklappen von Zeilen in einer Seite.
Der Inhalt der Seite wird von einem anderen Programm ständig neu geschrieben.
Diese Seite wird öffter mit "META HTTP-EQUIV=Refresh" aktualisiert.
Bei der Aktualisierung wird die Seite jedoch zurückgesetzt und zugeklapte Inhalte somit wieder geöffnet.
Kann dies geändert oder umgangen werden?

Beispielcode:
<html>
<body>
<table border="0">
<tr id="Reiter1" onclick="document.getElementById('Reiter2').style.display='block';
document.getElementById('z1').style.display='block';
document.getElementById('z2').style.display='block';
this.style.display='none'" style="display:none;">
<td>+ Reiter</td>
</tr>
<tr id="Reiter2" onclick="document.getElementById('Reiter1').style.display='block';
document.getElementById('z1').style.display='none';
document.getElementById('z2').style.display='none';
this.style.display='none'">
<td>- Reiter</td>
</tr>
<tr id="z1">
<td>test1</td>
</tr>
<tr id="z2">
<td>test2</td>
</tr>
<META HTTP-EQUIV=Refresh CONTENT='5; URL=file:///c:/diese_Datei.htm'>
</body></html>
file:///c:/diese_Datei.htm bitte anpassen!

MfG
Heimwerker
 
AW: [ HTML ] Seiten-Zustand bei Aktualisierung beibehalten

Ich würde den IST-Zustand einfach in eine PHP-Session schreiben! Oder darfste/willste kein PHP benutzen?
 
AW: [ HTML ] Seiten-Zustand bei Aktualisierung beibehalten

so ganz kommt der Anwendungsfall noch nicht rüber..

..beim ersten Laden soll alles "zu" sein, dann kann der User was öffnen, Content nachladen lassen (hierbei keine Schließung) und dann soll der User bestimmt trotzdem jederzeit öffnen/schließen können?

A) ..ich würde einen Schließmechanismus mit CSS nehmen (hide/show) .. (kein muss :p)

Für diesen würde ich dann bzg. der erweiterten Logik (dein Erneuern) mit javascript steuern. Gegenüber dem von dir beschriebenen Phänomen bräuchtest du dann also (egal wie) eine weitere Bedingung, die prüft ob Content geladen wurde. Z.B. könntest du nach jedem Refresh abfragen, ob spezifischer Inhalt vorhanden ist und dann für diesen Fall ein Öffnen erzwingen bzw. vorgeben.
 
AW: [ HTML ] Seiten-Zustand bei Aktualisierung beibehalten

Internet + Speichern = Cookie
 
AW: [ HTML ] Seiten-Zustand bei Aktualisierung beibehalten

soory, verstehe nicht wie das im code aussehen soll.
Ob css oder php... egal. css nutze ich bereits, wäre also von vorteil. php bin ich mir nicht sicher, ob das so ohne weiteres auf unix läuft.
Beim aktualisieren soll der letzte Zustand beibehalten werden. Ob geöffnet oder bene nicht. Ich benötige auch keine umschreibung, wie ich es machen könnte, da ich diese nicht in code umsetzen kann. Ich kenne mich nur etwas im HTML aus!

Kann ich eventuell mit HTML etwas im Browserspeicher speichern und abfragen (Cookis/-SessionID etc..)? Wenn ja wie?

Danke, für die Antworten.
 
AW: [ HTML ] Seiten-Zustand bei Aktualisierung beibehalten

Hi,

mit HTML kannst du gar nix was das angeht. Wenn du nicht mit PHP arbeiten willst gibt es nur noch die Möglichkeit via JavaScript Cokies auszulesen bzw. zu setzen.


Gruß

chris2603
 
AW: [ HTML ] Seiten-Zustand bei Aktualisierung beibehalten

Hat eventuell jemand ein beispiel, wie ich das Javaskript mit cookies dort einbauen kann?
 
Das Zauberwort heißt hier, wie so oft, AJAX.
Solche Nachlade-Aktionen sind perfekte Anwendungsfälle für asynchrone Abfragen. Es mag zwar dann nicht barrierefrei sein, dafür ist es performant (sowohl für den Server als auch für den User) und bequem.
 
DANKE, auf SELFHTML bin ich recht oft :-)
mit AJAX kann ich leider nichts anfangen.

Ich habe es nun soweit, dass der Zustend ins cookie geschriben wird.
Leider verstehe ich nicht wie ich den Zustand in "<dt...>" auslese, abfrage und dementsprechend handle. Ich kenne dort nur "onclick". gibt es etwas bei Seitenaufbau?

jetziger code:
<html>

<script type="text/javascript">
function zu() {
document.cookie="zu";
}
function auf() {
document.cookie="auf";
}
</script>

<body>
<table border="0">
<tr id="Reiter1" onclick="document.getElementById('Reiter2').style.display='block';
document.getElementById('z1').style.display='block';
document.getElementById('z2').style.display='block';
auf();
this.style.display='none'" style="display:none;">
<td>+ Reiter</td>
</tr>
<tr id="Reiter2" onclick="document.getElementById('Reiter1').style.display='block';
document.getElementById('z1').style.display='none';
document.getElementById('z2').style.display='none';
zu();
this.style.display='none'">
<td>- Reiter</td>
</tr>
<tr id="z1">
<td>test1</td>
</tr>
<tr id="z2">
<td>test2</td>
</tr>
<META HTTP-EQUIV=Refresh CONTENT='5; URL=file:///c:/design.htm'>
</body></html>
 
Code:
<body onload="...javascript...">
Wieso aber nicht per jQuery/prototype und Co.?
 
Mag sein, er muss sich aber nicht um Attribute wie onload im body scheren, sondern kann einfach
Code:
$(function() { ... });
nutzen.
 
Es geht schneller, sich in ein Framework einzuarbeiten, als ohne jeglichen Plan ein Projekt ohne Framework umzusetzen.
 
Jetzt schaut es schon gut aus. Es Funktioniert zu mindest. Damit sollte ich weiter kommen.
Mal schaun wie weit ich mit dem cookie komme, da einige witere Reiter/Blöcke ein und ausgeblendet werden können müssen.
<html>

<script type="text/javascript">
function zu()
{ document.cookie="zu";
}
function auf()
{ document.cookie="auf";
}
function start()
{
if (document.cookie)
{
zustand = document.cookie;
if ( zustand == "zu" )
{
document.getElementById('Reiter1').style.display='block';
document.getElementById('Reiter2').style.display='none';
document.getElementById('z1').style.display='none';
document.getElementById('z2').style.display='none';
}
else
{
document.getElementById('Reiter1').style.display='none';
document.getElementById('Reiter2').style.display='block';
document.getElementById('z1').style.display='block';
document.getElementById('z2').style.display='block';
}
}
}

</script>

<body onload='start()'>
<table>
<tr id="Reiter1" onclick="document.getElementById('Reiter2').style.display='block';
document.getElementById('z1').style.display='block';
document.getElementById('z2').style.display='block';
auf();
this.style.display='none'" style="display:none;">
<td>+ Reiter</td>
</tr>
<tr id="Reiter2" onclick="document.getElementById('Reiter1').style.display='block';
document.getElementById('z1').style.display='none';
document.getElementById('z2').style.display='none';
zu();
this.style.display='none'">
<td>- Reiter</td>
</tr>
<tr id="z1">
<td>test1</td>
</tr>
<tr id="z2">
<td>test2</td>
</tr>
<META HTTP-EQUIV=Refresh CONTENT='5; URL=design.htm'>
</body></html>
 
Ja genau, so wird's was. Vielen Dank. :-)
 
Zuletzt bearbeitet:
also arrays mag das cookie nicht...
z.B.:
zustand = new Array("test1","test2");
document.cookie=zustand;

zustand=document.cookie;
zustand[0] = "test3";
alert(zustand);
anstatt test3,test2 spuckt er test1,test2

und cookie('name','wert'); funktioniert nicht:
document.cookie('reiter1','test1');
alert(document.cookie('reiter1'));
da kommt nix zurück, scheint der IE syntacktisch nicht zu können.
 
Ein Cookie ist auch nur ein String und kann mit Arrays nichts anfangen. Lies dich am besten erst Mal ein, wir können dir hier nur sagen, was woanders schon 100 Mal steht.

$.cookie() funktioniert auch nicht, dazu musst du jQuery einbinden. Dadurch und durch Plugins, bekommst du aber weitaus mehr Möglichkeiten, die zudem noch viel einfacher anzuwenden sind.
 
Zurück
Oben