Klaus Junge: FRAMES: leeres Fenster läst sich nicht ansprechen

Beitrag lesen

Hallo Viktor,

also die Banane ist nicht krumm wegen der Erdanziehung :o).

Wenn das so wäre, dann müsste die Staude ja nach oben wachsen *g*

Also, da bin ich anderer Meinung.
Die Stauden hängen, in der Mitte dieser senkrechte Hauptstrang und die
einzelnen Bananengrüppchen wachsen zunächst waagerecht nach
außen und werden krummer und krummer je älter sie werden.
Irgendwann zeigt das Ende dann fast nach unten.
Aber, das braucht nicht wirklich die Erdanziehung sein.
Es soll ja auch andere Häkchen geben die sich früh krümmen.

[schnipp, nun gesternabend]

bin gerade am Durchflöhen der Quellen.
Bisher hatte ich es so gehalten, daß da wo Rahmen dransteht
auch was drin zu sein hat. Deinen Ansatz, einen leeren
Rahmen lediglich über den Namen zu referenzieren, muß ich halt
noch kapieren.

In SELFHTML/tcia.htm findest Du:

Mit <frame src=...> "Dateiname" definieren Sie innerhalb
  eines Frame-Sets den Inhalt des bzw. der zugehörigen Frames
  (frame = Rahmen, src = source = Quelle).
...
  Ferner sollten Sie für jeden definierten Frame mit name=
  einen Namen vergeben. Diese Namen brauchen Sie, um  Verweise zu
  anderen Frames zu definieren.
...
  Beachten Sie:
  Wenn Sie zu Beginn oder überhaupt keinen Inhalt in einem Frame
  anzeigen wollen, notieren Sie einfach ein nacktes <frame>.

Der Name ist mit dem 'sollte'-Attribut versehen, nicht jedoch src.
Der letzte Satz relativiert aber auch das.
Hieraus kann man also noch nicht explizit schließen, daß Dein
Ansatz erlaubt ist oder auch nicht, 'das Wenn Sie zu Beginn...'
sollte es als möglich erscheinen lassen.

In einer HTML-Referenz (WinHlp) steht:

<FRAME>
  This tag defines a single frame in a frameset. It has 6 possible
  attributes:
  SRC, NAME, MARGINWIDTH, MARGINHEIGHT, SCROLLING, and NORESIZE.
  The FRAME tag is not a container so it has no matching end tag.

SRC="url"
  The SRC attribute takes as its value the URL of the document to be
  displayed in this particular frame. FRAMEs without SRC attributes
  are displayed as a blank space the size the frame would have been.

NAME="window_name"
  The NAME attribute is used to assign a name to a frame so it can be
  targeted by links in other documents (These are usually from other
  frames in the same document.) The NAME attribute is optional;
  by default all windows are unnamed.

Hier sind alle Attribute als optional gekennzeichnet, jedenfalls
verstehe ich das so. Die Aussage zu src stimmt mit der obigen
letzten Aussage aus SELFHTML überein.
Bis hierher würde ich schließen, daß Dein Ansatz richtig ist.
Du hast einen Namen vergeben der zum Referenzieren benötigt
wird, die Auslassung der Quelle definiert das Frame als leer.

Über das JavaScript-Object bzw -Array 'frames' sollten auch
namenlose Frames über Indices erreichbar sein, dazu müsste der
Anker aber wohl anders definiert werden.

Die Hinweise zu targets kann ich in SELFHTML gerade nicht finden.
Es gibt sie aber.

Ja, in SELFHTML/tcic.htm:
...
  Anstelle von target="_blank" können Sie auch target="Halligalli"
  oder sonst irgendeinen Unsinn notieren. Wenn es kein Fenster mit
  diesem Namen gibt, öffnen die WWW-Browser das Verweisziel in einem
  neuen Browser-Fenster.

Die besagte HTML-Referenz gibt jedoch einen Hinweis zum Verhalten.

TARGET
  Browser windows can now have names associated with them.  
  Links in any window can refer to another window by name.
  When you click on the link, the document you asked for will
  appear in that named window. If the window is not already open,
  Netscape will open and name a new window for you.

Der letzte Satz besagt, wenn ein Fenster, hier wohl eher ein Frame,
dem Browser nicht bekannt ist, dann öffnet und benennt er es automatisch.
Dieses beschreibt ganz gut was ich an Deinem Beispiel beobachten konnte.
Meine Schlußfolgerung ist, daß der Browser das von Dir benannte
Frame nicht kennt und es daher als neues Fenster öffnet.

Im Umkehrschluß bedeutet das aber, daß der im Frameset definierte
Name für das im Anker benutzte target entweder nicht sichtbar
oder nicht erreichbar ist.

Auweia, das ist ja peinlich!

Der Name 'ansicht' ist ja im Frameset, also auf oberster Ebene
definiert, genauso wie 'oben'.
Nun versuchst Du aus dem einen untergeordneten Bereich, nämlich
'oben', den Inhalt und somit die 'location' eines anderen Bereiches,
namlich in 'ansicht' zu ändern. Die beiden untergeordneten Bereiche
kennen sich aber doch nicht.
Aus diesem Grunde wird ja auch ein neues Fenster geöffnet.

Dieses ist ja dann im Prinzip das Zwei-Frames-Problem wie in
SELFHTML/teda.htm beschrieben.

Damit geht Dein Ansatz aber nicht, einfach deshalb, weil Du
dazu die property location.href von 'ansicht' umdefinieren mußt.
Aber gerade diese ist ja nicht definiert weil Du das Frame ja
als leer definiert hast und es somit noch keine gibt.

Wenn Du nun im Frameset eine 'leere' Quelle (zB src="empty.htm")
angibst, dann gibt es für 'ansicht' eine 'location' und der
Browser ist in der Lage diese zu ändern.

Ob meine Erklärungsversuche das gelbe vom Ei sind, hab' ich selbst
noch nicht kapiert, vielleicht blicke ich das noch nicht so recht.
Die Definition eines leeren documents macht die einfache Nutzung
des target="ansicht" im href möglich ohne auf JavaScript zurück-
greifen zu müssen. Aber auch das Zwei-Frames-Verfahren funktioniert
bei mir nicht solange das Frame kein definiertes src hat.

Das liegt vermutlich daran, daß das JavaScript Objektmodell
mit seinen Sichtbarkeitsbedingungen nicht für die einfachen
HTML-Konstrukte maßgebend zu sein braucht.

Ich habe mal rumprobiert, es funktioniert.

[schnipp, nun wieder heute]

Nun, bislang haben meine Versuche eher die Qualität:
'denn wär sie nicht krumm, dann wär sie eine Banane nicht mehr'.

Die Hauptgefahr bei Deiner Struktur ist wohl, daß im leeren
Frame unerwünschterweise ein Verzeichnis abgebildet werden kann.
Wenn diese Zugriffsart auf dem Server verboten ist, dann
kommt auch noch eine Fehlermeldung.
Was ist eigentlich mit der Hintergrundsfarbe? Diese hängt
doch dann zunächst nur von den Einstellungen des Users ab.
Erst wenn Du ein Body lädst wird sie ja ggf. gesetzt.
Das Erscheinungsbild Deiner Seite könnte dann erstmal
recht 'gräulich' sein.

Klaus