Problem mit Anzeige im Innenframe

Hallo JAVA-Experte

Ich habe ein kleines Problem mit der Darstellung der Ausgabe der beiden JAVA-Scripte meiner Seite. Diese stammen verschiedenen Internetseiten und wurden von mir entsprechend meiner Seiten umgeschrieben. Für diesen Beitrag habe ich sie nochmals auf das Wesentliche verkürzt und Formatierungen entfernt, aber so wie sie unten stehen müßten sie problemlos funktioneren, wenn man beliebige HTML-Verweise einsetzt.

Die HTML-Seite enthält zwei Buttons und ein Innenframe.

Das erste Script ist eine Suchmaschine für Stichwörter meiner Seiten.

Das zweite Script zeichnet einen Menübaum mit mehreren Untermenüs.

Eigentlich soll das ganze folgendermaßen funktionieren (mir ist schon klar, daß das mit alten Browsern nicht richtig klappt!).

  • beim Laden der Seite erscheint im Innenframe „framestartseite.htm“

  • beim drücken des ersten Buttons wird im Innenframe eine bestimmte normale HTML-Seite ohne Scripts dargestellt („beliebig.htm“)

  • beim Drücken des zweiten Buttons wird der Menübaum (suchmenue.js) im Innenrame angezeigt. Man kann einen Menüpunkt auswählen, der zur gewünschten Seite führt, die im aktuellen Fenster bzw. bei entsprechender Wahl (siehe script) im einem neuen Fenster geladen wird

  • bei Eingabe eines Suchbegriffes im Formular werden die Ergebnisse durch suchmaschine.js im Innenframe angezeigt.
    Man kann ein Suchergebnis auswählen, das zur gewünschten Seite führt, die im aktuellen Fenster geladen wird.

Aber es passiert folgendes.

  • beim Laden der Seite erscheint der Menübaum im Innenframe

  • das gewählte Suchergebnis wird im Innenframe oder im neuen Fenster angezeigt???

  • sobald der Menübaum erstmalig im Innenframe geladen wurde, werden die Suchergebnisse und „beliebig.htm“ im neuen Fenster angezeigt???

Ich habe schon verschiedene Varianten ausprobiert, die das Ergebnis veränderten, aber so wie es sein sollte, habe ich es noch nie hinbekommen.

Bitte, bitte wenn Du eine Ahnung hast, wie die Scripts nach meinen Vorstellungen angezeigt werden, dann lass mich nicht weiter verzweifeln.

Im Voraus vielen vielen Dank

Daniel

anzeigefenster

/*

  • Anlegen der Variablen „suchbegriff“, „beschreibung“ und „adresse“
  • enthalten Daten des „Object“
    */

suchbegriff = new Object();
beschreibung = new Object();
addresse = new Object();

/*

  • Festlegen wieviele Suchbegriffe der Variablen „suchbegriff“ zugeordnet werden
    */

suchbegriff[0] = 26

/*

  • Definition der Variablen :
  • suchbegriff ( führt bei Eingabe in der Suchmaske zur zugehörigen Seite )
  • beschreibung ( erscheint im Suchergebnisfenster beim jeweiligen Link )
  • adresse ( das Suchergebnis verweist auf diese Datei )
    */

suchbegriff[1] = „suchbegriff1“
beschreibung[1] = „BESCHREIBUNG“
addresse[1] = „s1.htm“

suchbegriff[2] = „suchbegriff2“
beschreibung[2] = „BESCHREIBUNG“
addresse[2] = „s2.htm“

suchbegriff[3] = „suchbegriff3“
beschreibung[3] = „BESCHREIBUNG“
addresse[3] = „s3.htm“

/*

  • Definition der Funktion „durchsuchen“
    */

function durchsuchen()

{

/*

  • Definition der Variable „fundergebnis“
  • Definition der Variable „eingabe“
  • document ( Beziehung zu aktuellem Browserfenster mit Suchmaske )
  • forms ( Zugriff auf erstes Formular „suchenach“ im HTML-Code der Suchmasken-Seite )
  • value ( in Suchmaske eingegebener Begriff )
  • toLowerCase ( Umwandlung von Gross- in Kleinbuchstaben )
    */

var fundergebnis = false

var eingabe = document.forms[0].suchenach.value.toLowerCase();

var doc = top.menufenster.window.document

doc.clear()

doc.write("<body bgcolor=‚white‘>")

doc.opener = window;

doc.opener.name = „haupt“;

doc.write ("<head><title> ??? </title></head>");

doc.write ("<BODY TEXT=#000000 LINK=#000080 VLINK=#800040 ALINK=#FF0000><font face=Arial,Helvetica><br><h4><center>Suchergebnisse für den Begriff : „+eingabe+“</center></h4><hr>")

/*

  • Zuordnung der „eingabe“ zu vorhandenem „suchbegriff“
    */
    for (var i=1; i <= suchbegriff[0]; i++)

{

if(eingabe == suchbegriff[i])

{

fundergebnis = true;

doc.write ("    <font size=1>"+beschreibung[i]+"</font>")

doc.write ("<h6>             <a href="+addresse[i]+" target=‚haupt‘>Ansehen</a></h6>")

}

}

/*

  • Ausgabe bei nicht vorhandenem „suchbegriff“
    */

if(!fundergebnis)

doc.write ("<h5><font color=#CC0000><center><blink>Dieser Begriff befindet sich nicht in der Suchdatenbank!</blink></center</font></h5>")

}

function gesamtmenu()

{

/*

  • Anlegen der Variablen „pkt1“, „pkt2“, „pkt3“ ( Menüpunkte )
    */

var pkt1, pkt2, pkt3, pkt4

/*

  • Definition der Variablen „wurzel“ ( „hauptmenu“ entspricht den Hauptmenüs )
    */

wurzel = hauptmenu(„Gesamtindex“)

/*

  • Definition der Variablen „pkt1“, „pkt2“, „pkt3“
  • „zuordnung“ erklärt Zuordnung der childmenüs
  • „untermenu“ erklärt childmenüs
  • „eintrag“ erklärt childmenüeinträge
  • „ausgabe“ 0 oder 1 entspricht Öffnen in Frame oder neuem Fenster
  • „beschreibung“ erklärt Seiteninhalt
  • „link“ erklärt zu öffnende Seite
    */

pkt1 = zuordnung(wurzel, hauptmenu(„buchstabe a“))

pkt2 = zuordnung(pkt1, untermenu(„aa“))

zuordnung(pkt2, eintrag(0, „aaa“, „aaa.htm“, „“))

zuordnung(pkt2, eintrag(0, „aab“, „aab.htm“, „“))

pkt2 = zuordnung(pkt1, untermenu(„ab“))

zuordnung(pkt2, eintrag(0, „aba“, „aba.htm“, „“))

zuordnung(pkt2, eintrag(0, „abb“, „abb.htm“, „“))

zuordnung(pkt2, eintrag(0, „abc“, „abc.htm“, „“))

pkt1 = zuordnung(wurzel, hauptmenu(„buchstabe b“))

pkt2 = zuordnung(pkt1, untermenu(„ba“))

zuordnung(pkt2, eintrag(1, „baa“, „baa.htm“, „“))

zuordnung(pkt2, eintrag(1, „bab“, „bab.htm“, „“))

zuordnung(pkt2, eintrag(1, „bac“, „bac.htm“, „“))

}

/*
Definition der Funktion „hauptmenu“
*/

function hauptmenu(name)

{

/*

  • Anlegen der Variablen „pktordnung“ ( Zuordnung der Menüpunkte )
    */

var pktordnung

pktordnung = new Array

pktordnung[0] = 0

pktordnung[1] = 0

pktordnung[2] = 0

pktordnung[3] = name

return pktordnung

}

/*
Definition der Funktion „untermenu“
*/

// pktiliary function to build the node
// The entries in arraypkt[4]…array[length-1] are strings built in generate doc entry

function untermenu(name)

{

/*

  • Anlegen der Variablen „pktordnung“ ( Zuordnung der Menüpunkte )
    */

var pktordnung

pktordnung = new Array

pktordnung[0] = 0

pktordnung[1] = 0

pktordnung[2] = 1

pktordnung[3] = name

return pktordnung

}

//this way the generate tree function becomes simpler and less error prone
function zuordnung(parent, child)

{
parent[parent.length] = child

return child

}

/*
Definition der Funktion „eintrag“
*/

function eintrag(ausgabe, beschreibung, link)

{

var ausgabeort =""

if (ausgabe==0)

ausgabeort = „<a href=’“+link+"’ target=‚haupt‘><img src=‚doc.gif‘ alt=‚Frame‘"

else

ausgabeort = „<A href='http://“+link+"’ target=_blank><img src=‚link.gif‘ alt=‚new‘"

ausgabeort = ausgabeort + " border=0></a><td nowrap><font size=-1 face=‚Arial, Helvetica‘>" + beschreibung + „</font>“

return ausgabeort

}

/*
Definition der Funktion „nurwurzelzeigen“
*/

function wurzelzeigen()

{

var doc = top.menufenster.window.document

doc.clear()

doc.opener = window;

doc.opener.name = „haupt“;

doc.write("<body bgcolor=‚white‘>")

menustruktur(wurzel, doc, 0, 1, „“)

doc.close()

}

/*
Definition der Funktion „menustruktur“
*/

function menustruktur(menulaenge, doc, level, letztesmenu, verbindung)

{

var j=0

var i=0

doc.write("<table border=0 cellspacing=0 cellpadding=0>")

doc.write("<tr><td valign = middle nowrap>")

doc.write(verbindung)

if (level>0)

if (letztesmenu)

{

doc.write("<img src=‚lastnode.gif‘ width=16 height=22>")

verbindung = verbindung + „<img src=‚blank.gif‘ width=16 height=22>“

}

else

{

doc.write("<img src=‚node.gif‘ width=16 height=22>")

verbindung = verbindung + „<img src=‚vertline.gif‘ width=16 height=22>“

}

ordnergrafik(menulaenge, doc)

doc.write("</table>")

if (menulaenge.length > 4 && menulaenge[0]) // sub-nodes and the folder is open

{

if (!menulaenge[2]) //for folders with folders

{

level=level+1

for (i=4; i<menulaenge.length;i++)

if (i==menulaenge.length-1)

menustruktur(menulaenge[i], doc, level, 1, verbindung)

else

menustruktur(menulaenge[i], doc, level, 0, verbindung)

}

else //for folders with documents

{

for (i=4; i<menulaenge.length;i++)

{

doc.write("<table border=0 cellspacing=0 cellpadding=0 valign=center>")

doc.write("<tr><td nowrap>")

doc.write(verbindung)

if (i==menulaenge.length - 1)

doc.write("<img src=‚lastnode.gif‘ width=16 height=22>")

else

doc.write("<img src=‚node.gif‘ width=16 height=22>")

doc.write(menulaenge[i])

doc.write("</table>")
}

}

}

}

/*
Definition der Funktion „ordnergrafik“
*/

//builds the html code to display a folder and its label

function ordnergrafik(menulaenge, doc)

{

doc.write("<a href=‚javascript:stuck_out_tongue:arent.strukturoeffnen("" + menulaenge[3] + „“)‘><img src=")

if (menulaenge[1])

doc.write(„openfolder.gif width=24 height=22 border=noborder></a>“)

else

doc.write(„closedfolder.gif width=24 height=22 border=noborder></a>“)

doc.write("<td valign=middle align=left nowrap>")

doc.write("<font size=-1 face=‚Arial, Helvetica‘>"+menulaenge[3]+"</font>")

}

/*
Definition der Funktion „menugeschlossen“
*/

//when a parent is closed all children also are

function menugeschlossen(menulaenge)

{

var i=0

if (!menulaenge[2])

{

for (i=4; i< menulaenge.length; i++)

menugeschlossen(menulaenge[i])

}

menulaenge[0] = 0

menulaenge[1] = 0

}

/*
Definition der Funktion „klickregistrierung“
*/
//recursive over the tree structure
//called by openbranch

function klickregistrierung(menulaenge, menuname)

{

var i=0

if (menulaenge[3] == menuname)

{

if (menulaenge[0])

menugeschlossen(menulaenge)

else

{

menulaenge[0] = 1

menulaenge[1] = 1

}

}

else

{

if (!menulaenge[2])

for (i=4; i< menulaenge.length; i++)

klickregistrierung(menulaenge[i], menuname)

}

}

/*
Definition der Funktion „strukturoeffnen“
*/

//called when the user clicks on a folder

function strukturoeffnen(untermenuname)

{

klickregistrierung(wurzel, untermenuname)

if (untermenuname==„Gesamtindex“ && wurzel[0]==0)

top.menufenster.location=„x.htm“

verzoegerung = setTimeout(„wurzelzeigen()“,100)
}

//called after this html file is loaded

/*
Definition der Funktion „strukturoeffnen“
*/

function menustart()

{

gesamtmenu()

wurzelzeigen()

}

var wurzel = 0

var verzoegerung = 0

gesamtmenu()

Suchbegriff

Hallo,

also wer soll sich den Scheiss anschauen und Zeit darauf verschwenden?
Das kann nur ein Idiot sein…vielleicht bin ich auch einer…

Erstmal krieg ich hier die Krise wenn ich sowas sehe wie , geschweige denn von sowas:

Du laedst zwar framestartseite.htm, aber wenn du mal die Glupschaugen aufmachst, dann ueberschreibst du das natuerlich im body-Tag:

Also hau weg den Scheiss!!

Dritter Punkt:

Im Netscape funzt das auch wenn du folgendes schreibst:

BINGO

Im Netscape musst du ilayer in kombi mit layer nehmen, wegen der write() Methode.

Vierter Punkt:

Solche Formulierungen sind fuern Arsch:

var doc = top.menufenster.window.document

Bevor Du ueberhaupt weiterdenkst, schau Dir erstmal das DOM-Modell an!!! Das schreibt man so:

if (window.document.all)
var doc = window.document.menufenster.document;
else if (window.document.layers)
var doc = window.document.menufenster1.document.menufenster2.document;

Fuenfter Punkt:

Das mit doc ist schon sehr gut von Dir, kommt aber maechtig in die Krise, wenn Du das machst:

doc.write("")

doc.opener = window;

doc.opener.name = „haupt“;

doc.write (" ??? ");

Bist Du denn vom Wahnsinn besessen!!!

doc.opener = window;
doc.opener.name = „haupt“;

…will ich an zwei Stellen nicht mehr sehen!!! Schmeiss blos wech dat, aber hurtig!

Sechster Punkt:

Wenn Du in den Layer beim Netscape per write() reinschreibst, dann muss Du statt den body, head, usw. Tags drauf verzichten und eine Table aufbauen, die auch width=„570“ und height=„300“ hat, sonst wird der Inhalt falsch zentriert. Haengt damit zusammen, dass der layer im ilayer schon apriori zentriert ist und dann nach rechst ausgedehnt wird, solange dort auf der rechten Seite vom ilayer noch Platz ist.

Also bei mir funzt es alles ausgezeichnet.

CU

Hallo Meister des Java-Script,

Du bist der Beste! Danke, das Du Dir mein Script angeschaut hast. Ich konnte im Moment Deine Tips nur überfliegen, da ich schwer im Prüfungsstress bin.

  • Sorry für , denn das hasse ich normalerweise auch. Hat sich wohl irgendwie eingeschlichen. :wink:

  • Der layer-Tip ist echt Klasse. Wußte nicht, daß man es im Netscape so bewerkstelligen kann.

  • Das

doc.opener = window;
doc.opener.name = „haupt“;

habe ich nur eingefügt, damit ich aus den Scripts mit

bewirken kann, das für die Ausgabe das Hauptfenster …

Es geht natürlich mit target=_parent

… bin ich Dödel wieder nicht gleich drauf gekommen.

Alles funktioniert jetzt bestens!!!

Nochmals Vielen Dank!!