SUCHE MIT Google
Web virtualuniversity.ch
HOME DIDAKTIK ECDL ELEKTRONIK GUIDES HR MANAGEMENT MATHEMATIK SOFTWARE TELEKOM
DIENSTE
Anmeldung
Newsletter abonnieren
Sag's einem Freund!
VirtualUniversity als Startseite
Zu den Favoriten hinzufügen
Feedback Formular
e-Learning für Lehrer
Spenden
Autoren login
KURSE SUCHEN
Kurse veröffentlichen

Suche nach Datum:

Suche mit Schlüsselwort:

Suche nach Land:

Suche nach Kategorie:
PARTNER
ausbildung24.ch - Ausbildungsportal, Seminare, Kursen... 

 
HTMLopen.de - Alles was ein Webmaster braucht

 
PCopen.de - PC LAN Netze und Netzwerke - alles was ein IT Profi und Systemtechnicker braucht

SOFTWARE


Frames sind bereits in HTML eingeführt worden und ihre Verwaltung, obwohl kompliziert und voller Fußangeln, ließ eigentlich keine Wünsche offen. Trotzdem bietet JavaScript den Zugriff auf  Frames. Dazu ist das Objekt "frames" definiert, eine Variante des Objektes "window". Die Eigenschaften und Methoden von window, aber auch die Unterobjekte document, event, historyund location gelten auch für frames.
In JavaScript, wo man es mit den Arrays hat, werden Framesin der Reihenfolge ihrer Definition in der Form frames[0],frames[1],... registriert und sind so außer mitihrem Namen ebenfalls ansprechbar. Allerdings, wie es beider Objektorientierung so geht, werden die Frames nichtfür eine ganze Frameseite durchgezählt, sondernimmer nur in Bezug auf ihr "Elternfenster", das parentheißt. Wie bei allen Arrays dieser Art kann man mitlength die Länge der Framearrays in jedemFenster erfragen. Ich frage mich allerdings, was mit einemSeitengestalter los ist, der so weit die Übersichtverloren hat, daß er solche Fragen stellen muß!


Frames verwalten

Um die Syntaxunterschiede zwischen HTML und JavaScriptzu verdeutlichen, möge in einem HTML-Frameset ein linkesFenster "fr_menue" und ein rechtes Fenster "fr_inhalt" definiertworden sein. Auf der Seite, die ins Menü-Fenster geladenwird, soll der Link auf eine Seite "inhalt1.htm" verweisen,die in "fr_inhalt" geladen und angezeigt werden soll. VergleichenSie die beiden Aufrufe!

HTML:
<a href="inhalt1.htm" target="fr_inhalt">Erste Seite</a>
JavaScript, Variante 1:
<form><input type="button" value="Erste Seite" onClick="javascript:parent.frames[1].location.href='inhalt1.htm'"></form>
Variante 2:
<form><input type="button" value="Erste Seite" onClick="javascript:parent.fr_inhalt.location.href='inhalt1.htm'"></form>

Im JavaScript-Fall wurden zwar Buttons genutzt, auch Bilder wären möglich, der Aufruf ist aber deutlich länger (und fehleranfälliger) geworden. parent ist der reservierte Name des übergeordneten Fensters. Bei der hier verwendeten Zählung muß parent zwangsläufig mit dem allerobersten Fenster top identisch sein.
Kürzer wird es mit JavaScript bei der Beendigung einer Framestruktur. Denn hier ist die Adressierung einer neu zu ladenden Seite auf das Gesamtfenster einfacher.

HTML:
<a href="neueseite.htm" target="_top">Erste Seite</a>
Javascript:
top.location.href="neueseite.htm"

 Was hier fehlt, ist allerdings der Anlaß, die angegebene JavaScript-Zeile auszuführen. Das könnte wieder ein geeignet gewähltes Event sein.



JavaScript wird im Zusammenhang mit Frames gerne angewendet, um statt einfacher Links optisch aufgepeppte Buttons (etwa mit veränderlicher Farbe) für die Navigation einzusetzen. Allerdings gibt es dabei keine spezifischen Frame-Probleme, sondern es ist eine Nutzanwendung der Ereignissteuerung.


Fremden Frames entkommen

Eine sinnvolle Anwendung der Eigenschaft length gibt es überraschenderweise doch. Man kann damit Seiten gegen das Einladen in fremde Frames zu schützen, weil dabei wegen fehlenden Platzes die Darstellung erheblich leiden kann. Dazu dient die Zeile:

<script language=JavaScript>
   if (top.frames.length != 0)top.location=self.location;
</script>

Die Bedingung, daß das Frame-Array im Fenster top eine Länge ungleich Null hat, heißt, daß die Zielseite Frames enthält. In diesem Fall wird das ganze Fenster top zum Ziel der neuen Seite erklärt, was die Frames hinfällig macht.


Frameinhalte nicht ohne Frame laden

Ein dem vorhergehenden entgegengesetztes Problem läßt sich mit sehr ähnlichen Mitteln lösen. Die zu einer Frame-Site gehörenden Seiten werden u.U. von Suchmaschinen gefunden und  von Nutzern direkt geladen. Da auf Seiten, die für Frames bestimmt sind, meist Navigationshilfen fehlen, ist der Leser völlig hilflos, wenn ihn der Autor oder weitere Seiten der Präsentation interessieren.
Hier muß erreicht werden, daß der Leser erfährt, daß er Frameinhalte liest. Auf behutsame Weise geht es so:

<script language="JavaScript">
   if (top.frames.length==0)
      document.write("Diese Seite ist Teil einer Frame-Struktur. Bitte rufen Sie die <a href='home.htm'>Titelseite</a> auf!");
</script>

Wenn dieses Script im Head untergebracht wird, erscheint der Text mit dem Link am oberen Bildrand, noch vor der Seitenüberschrift. Dem Leser bleibt es überlassen, ob er die Frames aufruft.
Etwas brachialer geht es naürlich auch.
Hier würde in jedem Falle der Anwahl irgendeiner Seite die gesamte Framestruktur errichtet und mit den Start-Seiten geladen:

<script language=JavaScript>
   if (top.frames.length==0) location.replace("start.htm")
</script>

Dabei entsteht aber das ärgerliche Problem, daß man die richtige thematische Seite, die die Suchmaschine anbot, zunächst wieder verliert und man sich müsam wieder zu ihr durchklicken muß. Viel schöner wäre es, man erhielte zwar die Navigationshilfen der Framestruktur, landete aber genau auf der gewählten Seite.
Um dieses zu realisieren, muß während der Umleitung der gewünschte Seitenname "gemerkt" werden. Über den Ladevorgang hinweg kann JavaScript selbst sich nichts merken.
Man könnte dieses Problem umgehen, aber soweit ich sehe, nur mit einem Cookie. Da sich Cookies wegschalten lassen bzw. erst dumme Fragen stellen, ob etc..., funktioniert es so nicht oder sie nerven.
Eine Lösung, die zwar umständlich ist, immerhin aber funktioniert, habe ich hier angewandt. Es wird zu jeder Seite der Präsentation eine eigene Kopie des Framesets erzeugt, in der anstelle der allerersten die gewünschte Seite angezeigt wird.
Zu einer hypothetischen Seite "seite100.htm" wird also eine Kopie des Framesets erzeugt, die "seite100_s.htm" heisse. Jetzt die Einträge:

Im <head> von seite100.htm steht:
<script language=JavaScript>
    if (top.frames.length==0) location.replace("seite100_s.htm")
</script>
das Frameset in seite100_s.htm könnte so aussehen:
<frameset cols = "20%,*" border="0" framespacing="0">
    <frame src="index.htm" name= "links">
    <frame src="seite100.htm" name= "rechts">
</frameset>

 

Mehrere Dateien gleichzeitig laden

Framespezifisch ist ein in HTML nur etwas umständlich lösbares Problem, die Veränderung von zwei oder mehr Frameinhalten auf einen Rutsch. Da dies oft benötigt wird, gebe ich in Kurzfassung einen geeigneten Code an. Für das einfache Neuladen zweier oder mehrerer Seiten in bestimmte Fenster (hier fr_eins und fr_zwei genannt) definiert man im head eine Funktion:

<script language="JavaScript">
   function Wechsel()
   {
      parent.fr_eins.location.href="seite1.htm";
      parent.fr_zwei.location.href="seite2.htm";
      ...
   }
</script>

Diese Funktion wird mit einem Event (z.B. onClick) aufgerufen. Professioneller läßt sich die Aufruffunktion mit Parametern für die Dateinamen und die Fensternummern gestalten. Dann können sich viele Aufrufe der immer gleichen Funktion bedienen.

DIPLOMARBEITEN UND BÜCHER

Diplomarbeiten zum Runterladen:

Suche im Katalog:
Architektur / Raumplanung
Betriebswirtschaft - Funktional
Erziehungswissenschaften
Geowissenschaften
Geschichtswissenschaften
Informatik
Kulturwissenschaften
Medien- und Kommunikationswissenschaften
Medizin
Psychologie
Physik
Rechtswissenschaft
Soziale Arbeit
Sozialwissenschaften


JOBS
HOME | E-LEARNING | SITEMAP | LOGIN AUTOREN | SUPPORT | FAQ | KONTAKT | IMPRESSUM
Virtual University in: Italiano - Français - English - Español
VirtualUniversity, WEB-SET Interactive GmbH, www.web-set.com, 6301 Zug

Partner:   Seminare7.de - PCopen.de - HTMLopen.de - WEB-SET.com - YesMMS.com - Ausbildung24.ch - Manager24.ch - Job und Karriere