badenzer: javascript und netscape - ich könnte kotz.....

hallo

das kann doch nicht wahr sein !

habe die dreamweaver navigationsleite komplett neu programmiert [siehe thread unten] (ja, ich weiss: den code könnte man 100 Mal abkürzen, aber ich habe ihn zu demozwecken extra super lang gemacht) und irgendwo habe ich nen saudummen fehler drinnen, so dass der netscape 6 nur scheisse baut (dahingegen ie 6 ohne probs)

also ich habe ein navi frame (vorläufig 3 menüpunkte) mit folgendem javascript:

<script language="JavaScript">
<!--
var markiert = 0;
var markiert_alt = 0;
function aktiviere(name, quelle)
{
 if (markiert == 1 && name == "aktuelles") {}
 else if (markiert == 2 && name == "lehre") {}
 else if (markiert == 3 && name == "lehrstuhl") {}
 else {
  if (name == "aktuelles")
 { markiert_alt = markiert;
  markiert = 1;
  document[name].src=quelle;
 }
 if (name == "lehre")
 {
  markiert_alt = markiert;
  markiert = 2;
  document[name].src=quelle;
 }
 if (name == "lehrstuhl")
 {
  markiert_alt = markiert;
  markiert = 3;
  document[name].src=quelle;
 }

if (markiert_alt != 0)
 {
  if (markiert_alt == 1)
  {
  document['aktuelles'].src='aktuelles_off.gif';
  }

if (markiert_alt == 2)
  {
  document['lehre'].src='lehre_off.gif';
  }

if (markiert_alt == 3)
  {
  document['lehrstuhl'].src='lehrstuhl_off.gif';
  }

}
 }
}

function tausche(name, quelle)
{
 if (markiert == 1 && name == "aktuelles")
 {
 document[aktuelles].src=aktuelles_on.gif;
 }

else if (markiert == 2 && name == "lehre")
 {
 document[lehre].src=lehre_on.gif;
 }

else if (markiert == 3 && name == "lehrstuhl")
 {
 document[lehrstuhl].src=lehrstuhl_on.gif;
 }
 else
 {
 document[name].src=quelle;
 }
}
//--></script>

die ansteuerung des Sciptes geht über:

<a href="../aktuelles/aktuelles_index.htm" target="unten" onmouseover="tausche('aktuelles', 'aktuelles_over.gif')" onmouseout="tausche('aktuelles', 'aktuelles_off.gif')" onclick="aktiviere('aktuelles', 'aktuelles_on.gif')"><img src="aktuelles_off.gif" width="80" height="17" border="0" name="aktuelles"></a>

<a href="../lehre/lehre_index.htm" target="unten" onmouseover="tausche('lehre', 'lehre_over.gif')" onmouseout="tausche('lehre', 'lehre_off.gif')" onclick="aktiviere('lehre', 'lehre_on.gif')"><img src="lehre_off.gif" width="58" height="17" border="0" name="lehre"></a>

<a href="../lehrstuhl/lehrstuhl_index.htm" target="unten" onmouseover="tausche('lehrstuhl', 'lehrstuhl_over.gif')" onmouseout="tausche('lehrstuhl', 'lehrstuhl_off.gif')" onclick="aktiviere('lehrstuhl', 'lehrstuhl_on.gif')"><img src="lehrstuhl_off.gif" width="82" height="17" border="0" name="lehrstuhl"></a>

irgendwo muss da was saudummes drinnen sein, was der netscape hasst !?

merci

  1. Hallo badenzer,

    irgendwo muss da was saudummes drinnen sein, was der netscape hasst !?

    Vielleicht solltest Du es statt mit document[irgendwas] lieber mit document.images[irgendwas] probieren? Dass document[irgendwas] im IE klappt ist ja kein Wunder - aber auch falsch.

    Grüße,

    Christian

    --
    Sollen sich alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen und nicht mehr davon erfasst haben als eine Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst.
                          -- Albert Einstein
    1. Hi Christian,

      Aua --> ja das kommt der Lösung schon sehr nahe
      Du bist ein Schatz ;-)

      Jetzt fehlt nur noch eines zur Vollkommenheit !

      Das vorhin aufgeführte Skript steht in einem Frame Namens "oben".
      Nun möchte ich von einem anderen Frame auf das Frame "oben" zugreifen, um einen anderen Menüpunkt zu aktivieren

      In meiner Naivität dachte ich, machste in den BODY des anderen Frames:

      onload="parent.oben.aktiviere('aktuelles', 'aktuelles_on.gif')"

      Mit dem Ergebnis, dass der Netscape in dieser Sekunde sämtliche Grafiken aus dem Frame "oben" einfach rauslöscht .... Sauerei !

      ??? merci

      1. morgens ;-)

        onload="parent.oben.aktiviere('aktuelles', 'aktuelles_on.gif')"

        mit einem EventHandler wie "onload" kannst du Funktionen aus deinem Javascript aufrufen, also zum Beispiel
        <body onload="aktiviere(xx,yy)">
        aber keine neuen Javascript-Befehle ausführen lassen  -  es sei denn, du schreibst den Javascript-Code vollständig rein:
        <body onload="javascript:parent ...">
        Wenn deine Funktion nun auf eine nicht vorhandene "src"-Angabe verweist, wissen weder Netscape noch andere Browser was damit anzufangen. Schlußfolgerung: schreib deine Javascript-Funktion im Header so, daß der Browser (egal, ob Netscape oder sonst einer) was damit anfangen kann.

        Mit dem Ergebnis, dass der Netscape in dieser Sekunde sämtliche Grafiken aus dem Frame "oben" einfach rauslöscht

        Nö, Netscape "löscht" nix. Er kanns bloß nicht darstellen, obwohl er sich gewiß die größte Mühe gibt, deine Anweisungen zu befolgen

        .... Sauerei !

        nana, wer wird denn ...

        Grüße aus Berlin

        Christoph S.

        1. auch guten morsche !

          ich weiss net obs an meinen zuviel Halben liegt, die ich an dieser zwangsmässigen Samstagnachschicht eingeworfen habe, aber

          onload="javascript:parent.oben.aktiviere('aktuelles', 'aktuelles_on.gif')"

          funktioniert im netscape 6 keinen meter

          deine aussage, dass auch alle anderen browser bei Weglassen des "javascript: ...." nicht wissen was sie machen sollen, scheint nicht ganz korrekt zu sein: beim IE 6 funktioniert es supi !

          ich kann mir nicht helfen, aber ich bin ein Kind des *Kommerz* IE, vielleicht kann mir jemand nicht so verblendetes weiterhelfen ...

          merci

        2. Wenn deine Funktion nun auf eine nicht vorhandene "src"-Angabe
          verweist, wissen weder Netscape noch andere Browser was damit
          anzufangen. Schlußfolgerung: schreib deine Javascript-Funktion im >> Header so, daß der Browser (egal, ob Netscape oder sonst einer) >> was damit anfangen kann.

          das hab ich übrigens auch net so ganz verstanden ....

          alle schon am schlafen :-(

        3. Hallo Christoph,

          mit einem EventHandler wie "onload" kannst du Funktionen aus deinem Javascript aufrufen, also zum Beispiel
          <body onload="aktiviere(xx,yy)">
          aber keine neuen Javascript-Befehle ausführen lassen

          Selbstverständlich kann man das. Ein onmouseover="this.style...." ist absolut korrekt.

          <body onload="javascript:parent ...">

          Das 'javascript:' hat da eigentlich nichts verloren. Es ist m.E. sogar falsch, das hier zu verwenden. Man braucht das nur im 'href'-Attribut, um kenntlich zu machen, daß jetzt ein Javascript-Verweis folgt. 'In' den Eventhandlern kann nur Javascript stehen.

          Gruß, Jan

  2. Habe zum Verdeutlichen das ganze jetzt Mal zum Ausprobieren auf einen Server geladen

    http://home.arcor.de/kulmbacher/test1/

    vielleicht wird es so deutlicher