• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

mehrere Frames gleichzeitig neu bestücken / Navigationsproblem

Status
Für weitere Antworten geschlossen.

stax

Neues Mitglied
Hallo,

ich habe im Moment folgendes Problem: Ich durch das Anklicken eines Links in mehreren Frames einen neuen Inhalt haben. Im Moment löse ich das folgendermaßen:
Code:
function loadtext(Datei)
{
  statistik = "user/statistik-" + Datei
  Tagebuch = "user/tagebuch-" + Datei
  BilddT = "user/bdt/bdt-" + Datei
  document.getElementById('text').src = Tagebuch;
  document.getElementById('bild').src = BilddT;
  document.getElementById('stats').src = statistik;
}
Die Funktion loadtext wird dann über einen Anchor aufgerufen. Das funktioniert auch blendend, leider tritt aber ein sehr unschöner Nebeneffekt auf: wenn ich wieder den vorigen Inhalt der Frames angezeigt haben will und dafür die Zurücktaste des Browsers nutze, dann erscheint als erstes nur der alte Inhalt von Tagebuch, wenn ich noch einmal auf zurück klicke, dann der alte Inhalt von BilddT und beim dritten Mal zurückklicken, der alte Inhalt von statistik. Wie schaffe ich es, dass ich mit einem Klick wirklich wieder das angezeigt bekomme, was vor dem Aufrufen der Funktion loadtext angezeigt war?

PS: Das gleiche Problem habe ich an anderer Stelle, wo ich keinen Parameter übergeben muss, und deswegen neue Frames mit onclick bestücke:
Code:
<a href="#" onclick="parent.submenu.location='poli.html'; parent.main.location='white.html'; return false;"><font color="white">Politik</font>
Hier werden in die beiden Frames "submenu" und "main" jeweils neue Inhalte geladen. Aber wenn ich die Zurück-Taste nutze, werden jeweils einzeln wieder die alten Inhalte sichtbar...
 
Werbung:
Werbung:
Ohne Frames, die Nachteile erlebst du ja gerade, ausserdem funktioniert es nicht mehr, wenn Javascript deaktiviert ist.

Was wäre denn eine gute Alternative? Ich habe mich schon umgeschaut, aber nichts gefunden, was meinen Anforderungen gerecht wird. Mir geht es speziell darum, dass ich in verschiedenen Teilbereichen der Website unterschiedliche Inhalte aus unterschiedlichen Dateien laden will. Dies möchte ich deswegen so haben, um in einer einmal vorhandenen Struktur immer neue Daten hinzufügen zu können, ohne dass jedes Mal wieder die Struktur in die Datensätze einprogrammiert werden muss. Soweit ich mich erinnere, war das weder mit Tabellen, noch mit divs möglich, und auch iframes hatten irgendeinen Haken (oder ich habs nur nicht hingekriegt).

Lässt sich das mit HTML irgendwie hinbekommen, oder sollte ich dafür Java oder PHP lernen? Wäre eigentlich ganz froh, js nicht mehr nutzen zu müssen, eben weil es häufig deaktiviert ist.

Das wurde schon sehr häufig in diesem Forum erklärt, lies dir mal die folgenden Threads durch.

http://www.html.de/search.php?searchid=156384
Hatte ich schon fast befürchtet, allerdings habe ich nur die drei Threads gefunden, die mir alle nicht ganz mein Problem getroffen haben:
http://www.html.de/javascript-ajax-und-dhtml/5322-2-frames-gleichzeitig-aendern.html
http://www.html.de/html-und-xhtml/1073-zwei-frames-gleichzeitig-aendern.html
http://www.html.de/html-und-xhtml/19037-gleichzeiger-verweis-zwei-frames.html
Dein Suchlink funktioniert leider nicht, wenn ich ihn anklicke bekomme ich nur angezeigt: "Ihre Suchanfrage erzielte keine Treffer. Bitte versuchen Sie es mit anderen Suchbegriffen."

@threadi: Danke für den Link, aber Lösungen für mein Problem werden da leider auch nicht aufgezeigt.
 
@threadi: Danke für den Link, aber Lösungen für mein Problem werden da leider auch nicht aufgezeigt.

Wie gesagt kann dein Problem nur von Browserherstellern gelöst werden. Beim Klick auf "zurück" öffnen die meisten Browser die Seite die zuletzt aufgerufen wurde in der History.

Lässt sich das mit HTML irgendwie hinbekommen, oder sollte ich dafür Java oder PHP lernen?

Java zu lernen wäre etwas zuviel des guten. Was du meinst ist vermutlich JavaScript. Und nein: für dein Problem gibt es wie gesagt damit keine Lösung.

Was wäre denn eine gute Alternative?

Auf Frames verzichten wäre schonmal ein guter Weg. Eine Webseite wird mit HTML geschrieben und mit CSS gestylt, auf Framesets und Techniken aus dem letzten Jahrtausend wird verzichtet. Das wäre die Lösung die Du suchst.
 
Mir geht es speziell darum, dass ich in verschiedenen Teilbereichen der Website unterschiedliche Inhalte aus unterschiedlichen Dateien laden will. Dies möchte ich deswegen so haben, um in einer einmal vorhandenen Struktur immer neue Daten hinzufügen zu können, ohne dass jedes Mal wieder die Struktur in die Datensätze einprogrammiert werden muss.

Das ist vernünftig, hier helfen dir serverseitige Scriptsprachen wie PHP, in denen du mittels include Dateien einbinden kannst.

Soweit ich mich erinnere, war das weder mit Tabellen, noch mit divs möglich, und auch iframes hatten irgendeinen Haken (oder ich habs nur nicht hingekriegt).
Wie sollte es auch möglich sein, da es sich hierbei um Tags handelt, die deinem Inhalt eine Bedeutung geben und sonst nichts.

Lässt sich das mit HTML irgendwie hinbekommen
Nein, HTML ist nur für die Semantik zuständig.

oder sollte ich dafür Java oder PHP lernen?
Java wäre dafür etwas übertrieben, PHP ist zu empfehlen, oder eine andere serverseitige Scriptsprache.

Wäre eigentlich ganz froh, js nicht mehr nutzen zu müssen, eben weil es häufig deaktiviert ist.
Javascript ist nicht grundsätzlich schlecht, sollte aber nur unterstützend eingesetzt werden. Die Seite muss auch ohne Javascript funktionieren.

Dein Suchlink funktioniert leider nicht, wenn ich ihn anklicke bekomme ich nur angezeigt: "Ihre Suchanfrage erzielte keine Treffer. Bitte versuchen Sie es mit anderen Suchbegriffen."
Tatsächlich, da ist wohl etwas schief gegangen.

http://www.html.de/search.php?searchid=156454
 
Werbung:
Danke, dass beantwortet mir genau die Fragen, die ich mir gestellt habe. Bleibt noch eine Frage offen: es heißt immer: eine serverseitige Skriptsprache wie z.B. PHP. In einem anderen Thread von Dir habe ich gefunden, dass Du auch noch Python und ASP erwähnst. Gerade Python fände ich interessant, da ich meine skripte bis jetzt immer mit bash erstelle, was aber imho sehr hässlich ist. Da könnte ich dann zwei Fliegen mit einer Klappe erschlagen. Oder ist für Webanwendung PHP deutlich angebrachter, weil weiter verbreitet, geeigneter, o.ä.?
 
Ok, die Frage hat sich wohl auch geklärt, mein Provider unterstützt nur PHP und Perl. Ich denke, dann werde ich mich einfach mal in PHP einlesen...

PS: Falls jemand anderes noch in diesem Thread landen sollte: die suchwörter für die verlinkte Suche sind frames, php
 
Werbung:
PHP ist sehr weit verbreitet, zu den anderen Sprachen kann ich nicht viel sagen, da ich sie noch nicht probiert habe. PHP ist nicht unbedingt das Maß aller Dinge, gibt genug Sachen, die zu verbessern wären. Welche Sprache du verwenden solltest, hängt erstmal von deinem Server ab, nicht auf allen ist Python, Perl oder ASP verfügbar.
 
Falls es dir bei php nur um diese Funktion geht, dann brauchst du dich nicht einlesen. Du musst nur deine sich wiederholenden Frames (ich vermute mal header und navi) von dem html-Grundgerüst befreien (<html>, <head>, <title><body>) also alles, was nicht doppelt vorkommen darf. Dann fügst du in die Dokumente, in denen du diese haben willst an die Stelle, an der sie hinsollen ein:
PHP:
<?php include 'pfad/zur/datei.html'; ?>
Das hat zur Folge, dass der Quelltext aus der Datei in den Quetext der ersten Datei kopiert wird. Bei den meisten Providern ist es dann noch nötig, die Dateiendung der ersten Datei in .php zu ändern. Fertig ;)
 
Danke für den Hinweis. Ganz so einfach scheint es bei mir aber leider nicht zu sein, denn in der Navigation habe ich ja Links mehrere Links, die mir die Inhalte der jeweils anderen Frames bestimmen. Diese müsste ich dazu ja auch noch umändern, oder?
 
Werbung:
Genau bei diesen musst du dann den geänderten Dateinamen (xy.php) angeben. Und das target wegnehmen, da du ja keine Frames mehr hast zum ansprechen.
 
Achso, jetzt verstehe ich glaube ich langsam... Dann würde ein Anklicken des Links dazu führen, dass eine komplett andere Seite geladen wird, oder? Was ich im Kopf hatte war, dass durch das Anklicken eines Links nur ein Teil der Seite geändert wird (wie bei Frames). In etwa folgendermaßen:
Code:
<?php include 'logo.html'; ?>
<?php include 'navi.html'; ?>
<?php include 'main_so.html'; ?>
Jetzt soll durch einen in 'navi.html' enthaltenen Link nur 'main_so.html' gegen 'main_anders.html' getauscht werden. Mit der von Dir vorgeschlagenen vorgehensweise müsste stattdessen der Link in auf ein neues Dokument verweisen, dass dann folgendermaßen aussieht:
Code:
<?php include 'logo.html'; ?>
<?php include 'navi.html'; ?>
<?php include 'main_anders.html'; ?>
Ich hatte es eher so im Kopf, dass durch Anklicken des Links in 'navi.html' wirklich nur 'main_so.html' durch 'main_anders.html' ersetzt wird, während der Rest nicht nochmal neu geladen werden muss. Ist das auch möglich? Oder eher keine gute Idee?
 
Ich hatte es eher so im Kopf, dass durch Anklicken des Links in 'navi.html' wirklich nur 'main_so.html' durch 'main_anders.html' ersetzt wird, während der Rest nicht nochmal neu geladen werden muss. Ist das auch möglich? Oder eher keine gute Idee?

Nein, mit PHP alleine ist das nicht möglich. Man könnte aber AJAX dafür verwenden, was jedoch wiederum JavaScript erfordert. Ich würde dir raten mit PHP alleine zu arbeiten (für den Anfang) und es halt "hinzunehmen", dass jedes Mal die Seite neu lädt.
 
Werbung:
Ok, danke. Ist zwar nicht ganz das, was ich wollte, aber dann werd ich das wahrscheinlich doch so machen, weil mir die jetzige Frames-Lösung gar nicht gefällt.
 
So ist nunmal das normale Verhalter von Links, dass sich bei einem Klick, eine neue Seite geladen wird.
 
Werbung:
Stimmt, man siehts ja auch an den Frames, was für Probleme da z.B. mit der Browser-History auftreten, wenn man da dran rumfriemelt...
 
Für die ganz faulen wie mich gibt es dann auch noch die Möglichkeit, den kompletten Anfang (Doctype, head, title, banner, Navigation) und das gesamte Ende (footer, </html>) zu includen, so dass für die Seiten nur noch übrigbleibt:
PHP:
<?php include 'head.html';?>
Inhalt
<?php include 'foot.html'; ?>
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben