WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   frames (http://www.wcm.at/forum/showthread.php?t=174418)

wallhall 20.09.2005 12:05

frames
 
hallo leute,

ich habe eine seite mit zwei frames. wie kann ich es realisieren, dass wenn ich eine neue seite im ersten frame lade das zweite ebenfalls aktualisiert wird (also die startseite aus dem frameset wieder geladen wird)

danke und

jak 20.09.2005 16:31

Mit javascript: parent.nameDesFrames.location.href (eventuell auch .document.location.href)

BTW.: Frames sind pfui.

jak

wallhall 21.09.2005 08:48

hallo @jak,

danke für die antwort, aber warum sind frames pfui gacka :)

jak 21.09.2005 09:51

Der erste google Treffer zum Thema Frames gibt schon eine recht ausführliche Auflistung: http://www.subotnik.net/html/frames.html
auch hier steht etwas zu dem Thema:
http://de.selfhtml.org/html/frames/layouts.htm

Die Kurzfassung:
- Man kann sie nicht bookmarken
- Das drucken funktioniert nicht wirklich
- Viele Leute verwenden den <noframes> Tag nur für Text in der Art: Diese Seite braucht Frames, ihr Browser beherrscht das nicht. Dumm gelaufen.</noframes>. Im <noframes> Tag sollte eine minimale Navigation sein, damit ein User, dessen Browser keine Frames unterstützt trotzdem auf die Seiteninhalte zugreifen kann. Das betrifft vielleicht nicht viele menschliche User (wobei ich nicht weiß wie das alles mit Screenreadern aussieht), aber alle Suchmaschinenbots kennen keine Frames. Sie folgen vielleicht den einzelnen <frame src=""> Attributen, zeigen aber gnadenlos den <noscript> Text als Inhalt der Startseite an (ist ja auch der Inhalt den sie zu sehen bekommen). http://www.google.at/search?q=%22Thi...uses+frames%22

jak

wallhall 21.09.2005 10:38

diese problematik ist mir schon bewusst, daher ist mein frameset auch nicht die startseite. für mich ist es halt die eleganteste lösung um die seite übersichtlich zu präsentieren.
dass der <noframe>bereich auch einen alternativen link anbieten soll, ist glaub ich eh klar (mir zumindest :))

jak 21.09.2005 11:15

Noch was das ich vergessen habe: Das Problem der deep-Links.
Szenario 1: Eine Suchmaschine verweist auf eine Unterseite (d.h. nicht die Startseite des Framesets). Jemand sieht den Link, klickt darauf und steht vor einer Seite ohne Navigation, weil diese in irgendeinem anderen Frame ist.

Szenario 2: Einem User gefällt eine bestimmte Seite so gut das er einen Link dazu an seine Freunde schicken will. Er kann entweder zur Startseite linken und seinen Freunden beschreiben wie man zur interessanten Seite kommt, oder er sucht sich die Adresse des "Haupt-Frames" und linkt dorthin. Der neue User steht dann wieder ohne Navigation da.

Ich hoffe es ist halbwegs klar was ich meine, ist vielleicht ungeschickt ausgedrückt.

jak

wallhall 21.09.2005 11:49

@jak, was du meinst ist mir schon klar, nur gibt es viele alternativen?

so wie ich es will, dass im ersten (oberen) frame (oben großes, unten kleines frame) die auswahl und im zweiten die erklärung steht, kann ich nur mit frames lösen. (grob formuliert :))

ein zweites fenster dass sich öffnet will ich nicht


oder geht es irgendwie anders?

jak 21.09.2005 12:57

Wenn der IE CSS g'scheit unterstützen würde schon (position:fixed).

Wenn es um reine Datenanzeige auf einer einzelnen Seite geht sind frames nicht soo schlimm. Ein Beispiel wie man auch mit Frames eine halbwegs ordentliche Seite erstellt ist IMHO Javadoc z.B. unter: http://java.sun.com/j2se/1.5.0/docs/api/index.html

- Alle Seiten funktionieren auch ohne Frames
- Der Titel der Seite wird so gesetzt das er zur aktuellen Seite passt (zwar mit JavaScript, dazu gibt's in dem Fall AFAIK aber keine Alternative).

BTW: Man könnte eventuell mit JavaScript und window.location.search etwas basteln, damit die Seite einen echten Pfad bekommt, in der Art frameset.html?frame1=f1.html&frame2=f2.html

jak

ruffy_mike 21.09.2005 13:48

Frames sind mMn nicht pfui, sondern die Technik wird einfach (zu) oft falsch eingesetzt.

Grafiken auf Websites sind ja auch nicht pfui, obwohl sie auch Probleme hervorrufen können (textbasierte Browser); deshalb ist ja auch das ALT-Attribut vorhanden, dies wird genauso vernachlässigt wie bei Frames der NoFrames-Teil (...wobei ich mich auch zu den ALT-Faulsäcken bekenne)

Satan_666 21.09.2005 14:12

Frames verwende ich auch ungern, aber ein Problem hatte ich mal, wo ich bislang noch immer keine Alternativ gefunden habe zu Frames: ein Objekt am unteren Rand des Browserfensters setzen.

Wenn jemand dafür eine auf allen Browsern funktionierende Lösung hat, wäre die Ära der Frames für mich auch Vergangenheit.... :rolleyes:

jak 21.09.2005 14:49

Zitat:

Frames sind mMn nicht pfui, sondern die Technik wird einfach (zu) oft falsch eingesetzt.
Die Technik hat einige Mängel die nicht durch falschen Einsatz begründet sind, sondern einfach so sind (im HTML - Standard). Insbesondere das Framesets "keine Urls haben" (die deeplink-Problematik) kann man nicht durch einen anderen/besseren Einsatz vermeiden (außer vielleicht mit JavaScript, aber das ist wohl kaum Sinn der Sache).

Zitat:

Frames verwende ich auch ungern, aber ein Problem hatte ich mal, wo ich bislang noch immer keine Alternativ gefunden habe zu Frames: ein Objekt am unteren Rand des Browserfensters setzen.
Wie schon erwähnt, position:fixed wäre die Lösung, aber rat mal welcher Browser das nicht unterstützt...

IMHO gibt es natürlich Anwendungen wo man Frames verwenden darf:
- Wenn es nur einem "Zusatznutzen" dient (d.h. ein nettes Feature, aber die Seite funktioniert auch ohne). Beispiele dafür sind - wie schon gepostet - JavaDoc, aber z.B. auch der SelfHTML quickbar. Und wenn sogar SelfHTML frames verwendet...
Eine andere Möglichkeit die mir einfalen würde wäre eine fixe "Titelzeile" bei großen Tabellen.
- Wenn es nicht anders geht oder es auf andere Weise ein erheblicher Mehraufwand wäre. Wobei die Frage ist ob z.B. eine Leiste wirklich immer unten angezeigt werden muß. Oft reicht es ja wenn sie am Unteren Ende der Seite ist.

jak

ruffy_mike 21.09.2005 15:58

Die Sache mit den deep-links stimmt sicher, wobei dies bei MANCHEN Webinhalten keine od. kaum eine Rolle spielt - bei größeren Daten- und Infoseiten ist dies natürlich sehr wohl ein Problem.

Ausserdem gibt es ja die Möglichkeit, zu überprüfen, ob die Frame-Seite im entspr. parent-Frame läuft, wenn nicht, wird dieser nachgeladen. Nicht gerade toll, aber so steht man bei direkten Aufrufen zumindest nicht im "Niemansland".

Dummerweise wird die Pseudo-Positionierung von CSS wie du richtig schreibst noch nicht wirklich gut umgesetzt. Ich habe mal eine Seite testhalber damit formatiert, je mehr man diese Technik verwendet, desto mehr kommt einem das Grauen. Die Unterschiede in der Darstellung zw. IE, Mozilla, Opera usw. sind gewaltig.

jak 21.09.2005 16:22

Zitat:

Original geschrieben von ruffy_mike
Ausserdem gibt es ja die Möglichkeit, zu überprüfen, ob die Frame-Seite im entspr. parent-Frame läuft, wenn nicht, wird dieser nachgeladen. Nicht gerade toll, aber so steht man bei direkten Aufrufen zumindest nicht im "Niemansland".

Das ist nur dann eine halbwegs gute Lösung wenn ein deeplink auf einen Frame das Frameset so lädt, das die Seite auf die ich wollte angezeigt wird, und nicht die Startseite (wäre mit JS möglich, macht aber keiner).

jak

ruffy_mike 21.09.2005 17:40

Zitat:

Original geschrieben von jak
Das ist nur dann eine halbwegs gute Lösung wenn ein deeplink auf einen Frame das Frameset so lädt, das die Seite auf die ich wollte angezeigt wird, und nicht die Startseite (wäre mit JS möglich, macht aber keiner).

jak

Genau das meinte ich, habe ich vor kurzem wo gesehen im net. Macht aber in der Tat so gut wie niemand, da hast du recht...

Sesa_Mina 21.09.2005 20:16

Auf Selfhtml steht irgendwo im javascript teil vergraben wie man den Inhalt zweier Frames gleichzeitig ändert.

und wie man ein frameset nachlädt lässt sich dort auch finden. musst nicht mal so tief danach graben :)

=> http://de.selfhtml.org

wallhall 22.09.2005 09:08

@Sesa_Mina, ich hab mich jetzt ein wenig in's java reingelesen ...

kommt mir schon ein wenig komplizierter als html oder css vor :) ich denke einmal wenn du damit täglich arbeitest ist es wahrscheinlich gans einfach, als "anfänger" ist es aber doch ein bisschen schwieriger .....

jak 22.09.2005 10:51

Java ist auf jeden Fall komplizierter als HTML+CSS hat aber auch nichts mit beidem zu tun. Es hat auch absolut nichts mit JavaScript zu tun, es heißt nur ähnlich sollte aber trotzdem nicht verwechselt werden ;).

JavaScript ist vom Konzept her einer ObjektOrientierten Sprache ähnlich: man hat es mit Objekten zu tun die Eigenschaften (Variablen) und Methoden (Funktionen) bereitstellen. Wenn man noch nie mit einer Programmier- oder Skriptsprache zu tun hatte ist es natürlich ungewohnt.

Zitat:

Auf Selfhtml steht irgendwo im javascript teil vergraben wie man den Inhalt zweier Frames gleichzeitig ändert.
Wie schon erwähnt: Der Freund heißt "parent", damit kann man dann auf alle anderen Frames zugreifen: http://de.selfhtml.org/javascript/ob...tm#allgemeines

jak

jak 22.09.2005 15:52

Zitat:

Original geschrieben von ruffy_mike
Ausserdem gibt es ja die Möglichkeit, zu überprüfen, ob die Frame-Seite im entspr. parent-Frame läuft, wenn nicht, wird dieser nachgeladen.
Das macht z.B. Microsoft im MSDN:

Code:

<form name="MNPFramesForm" method="post" target="_top" action="/pfadZurSeite/Seite.mspx">
</form>
<script language="javascript">
        var framesValid = false;
        var menuFrame = parent.frames["MNPMenuFrame"];
                if (menuFrame) { framesValid = true; }
        }
        if (!framesValid) document.forms["MNPFramesForm"].submit();
</script>

An sich find' ich die Idee mit der <form> ziemlich gut, ich würd's aber ein bischen anders machen:
Code:

<form name="frameForm" method="get" action="/frame.php">
<!-- oder:
<form name="frameForm" method="get" action="/frame.html">
-->
  <input type="hidden" name="frame">
  etc.
</form>
<script language="javascript">
if (!wirSindDasObersteFrame){
  var form = document.forms["frameForm"];
  form.frame = document.location.href
</script>

Entweder hat man dann ein frame.php daß die Anzeige erledigt oder man macht es mit JavaScript (Pseudocode):
Code:

<script>
var loc=window.location.search
Suche in loc nach 'frame=xyz'
Speichere 'xyz' in Variable a
Setze den Unterframe auf a:
document.frames['main'].location.href=a
</script>

Wäre auch ausbaufähig (frame1=a.html&frame2=b.html), mann bräuchte dann nur mehrere <input>s und müsste den String bei jedem & aufspalten.

jak

wallhall 23.09.2005 11:51

hallo jak,

das wird ja immer krasser ;) , am we werde ich mal versuchen ob ich es so zum laufen bekomme ...

:aio:


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag