Bernhard Peissl: Frage zu

Beitrag lesen

Hallo Marko

Neugierig wie ich bin (und weil ich von Javascript nun mal null Ahnung habe), habe ich mir das Script auf http://www.morshausen.de/news/news.htm "in Action" angesehen.

Der Typ, der das geschrieben hat, ist anscheinend ein richtiges Koordinationsgenie. Bei diesem Code hätt ich schon lange keine Haare mehr auf den Kopf. Er jongliert da Variablen auf wildesten Pfaden durch seine kleine Seite.

Ich hoffe, dass ich dir erklären kann, was er gemacht hat:

In der Datei news.htm überprüft er mit

// if(!parent.oben)

.. wie schon gesagt, ob es ein parent-fenster gibt, das den Namen "oben" hat. Wenn diese if-Anweisung true !! zurückgibt heisst das es gibt kein "oben", und fragt den user ob er ins frameset wechseln will.

Das Rufzeichen steht für "Es existiert !kein! ..."

Dort steht nun zusätzlich folgende Zeile:

»»  else parent.oben.ShowBanner("../");

Wenn if false zurückliefert (=> d.h.: es !existiert! ein Frame mit dem Namen "oben"), und er ruft die Funktion Showbanner() in der Datei, die sich im Frame namens "oben" (=oben.htm) befindet, auf.

In der Datei oben.htm findest du dann die Funktion. Der Parameter ("../") wird nur übergeben, weil seine Banner-gifs einem anderen  Verzeichnis liegen als oben.htm

Als Javascript-Laie hab ich mir über die Funktion der Zeile nur soviel zusammenreimen können, daß sie beim Klick auf "abbrechen" einen Frame namens "oben" lädt.

FALSCH:
Jetzt überleg dir mal was passiert, wenn die Funktion showBanner('../') aufgerufen wird:

// function ShowBanner(prefix) {
//  var d=parent.frames['Rechts'].document;
//  switch(Math.ceil(Math.random()*8))
//  {
//   case 1: d.write("<a href='http://...>
//     <img src='" + prefix + "banner/b2.gif' border=0></a>");break;
//   case 2: d.write("<a href='' .... >
//     <img src='" + prefix + "banner/b1.gif' border=0></a>");break;
//
//   ... usw.
// }

aktuelles Verzeichnis, von dem aus die Funktion aufgerufen wird:
http://www.morshausen.de/news/news.htm

=> // <img src='" + prefix + "banner/b6.gif' border=0>

Gif liegt in:
http://www.morshausen.de/banner/b7.gif

Is doch alles Klar oder ;-)

Er braucht die Zeile mit else, da oben.htm nicht im selben Verzeichnis liegt wie news/news.htm! -Also echt, der Typ ist krank!

Was muß ich ändern, wenn bei mir dann wenigstens der Navigationsframe (Name: "Inhalt") mitangezeigt werden soll ?

Aber wie gesagt: Für deine Zwecke reicht es wenn du folgenden Code einbaust, und zwar in die Seite, die du schützen willst:

// if(!parent.xyz) {
//   var frame_wechseln = confirm('Ins Frameset wechseln?');
//   if(frame_wechseln) {                          
//       location.href="http://DeineDomain/NameDerFramesetDatei.html
//   }
// }

oder ganz brutal:

// if(!parent.xyz) {
//   parent.location.href="http://DeineDomain/NameDerFramesetDatei.html
// }

.... xyz ist in deinen Fall 'Inhalt' und NameDerFramesetDatei wahrscheinlich index.html!

// <frameset rows="60,*" border=0 frameborder=0 framespacing=0 .... >
//  <frame name="xyz" src="navi.htm" .... >
//  <frame name="FrameInDasDeineSeiteKommenSoll" src="mainframe.htm" ..... >
// </frameset>

.... Aber am besten du nimmst dir diese Seite nicht zum Vorbild. Und vergisst sofort was du da gesehen hast. ;-)

Grüsse,
Bernhard