raffi: Netscape streikt beim <div>-Tag

habe ein problem welches mal wieder mit dem netscape zusammenhängt....!

ein externes javascript ist zuständig für die mousovereffekte...:
##########################################
   ap="'";
   loaded=false;    // Define the variable used for testing if the page has loaded.
  if (document.images) {

image0on = new Image();
  image0on.src = "../images/L_adresse_over.gif";
  image0off = new Image();
  image0off.src = "../images/L_adresse.gif";
..
..
..

}
  function changeImages() {
  if (document.images) {
    for (var i=0; i<changeImages.arguments.length; i+=2) {
      document[changeImages.arguments[i]].src = eval(changeImages.arguments[i+1] + ".src");
    }  }}
##########################################

soweit klappt es auch,... die links werden also im IE und im NS mit mouseover/out gewechselt...

so siehts aus --> http://www.designandfunction.ch/temp/german/html/german_index.htm

was ich nun machen möchte ist eine <div>...</div>
ebene welche sich mit den menubuttons drinn am rande bewegt:
Das Problem --> http://www.designandfunction.ch/temp/german/html/xxgerman_index.htm

wie üblich klappt es im IE wunderbaar... nur der netscape streikt mal wieder...
hier auch gleich mal noch der auszug aus dem fehlerprotokoll von netscape:
#############################

document[changeImages.arguments[i]] has no properties.

#############################

was ich da mal aufgeschnappt habe ist das mit dem initialisieren der <div> ebenen:
#############################
<script type="text/javascript" language="JavaScript">
function init()
{
    if (document.layers)
    {
    // Code für Netscape 4
    }
    else if (document.getElementById) // ohne Klammern!!
    {
    // Code für 5er Browser
    }
    else if (document.all)
    {
    // Code für Internet Explorer 4
    }
}
</script>
#############################

was aber da reinkommt und wie,.. da bin ich überfragt!:(
wäre froh wenn mir jemand die fehlenden argumente posten könnte!

besten dank für eure hilfe!!!!!

  1. Kuck doch mal im SelfHTML unter "Allgemeine DHTML-Bibliothek"

    Da wird genau dieses Thema behandelt und mit dieser DHTML-Lib, gibt´s auch keine Browser Probleme

    1. hilft mir ehrlich geagt nix,.. hab mich schon dumm u. dä.. gesucht...!

      auch schon manches versucht aber der ns streikt noch immer,...

      ich vermute dass in meinem javascript nur ein kleiner teil ergänzt werden muss,.. ABER WELCHEN ????

  2. Moin!

    habe ein problem welches mal wieder mit dem netscape zusammenhängt....!

    ein externes javascript ist zuständig für die mousovereffekte...:

    soweit klappt es auch,... die links werden also im IE und im NS mit mouseover/out gewechselt...

    was ich nun machen möchte ist eine <div>...</div>
    ebene welche sich mit den menubuttons drinn am rande bewegt:
    Das Problem --> http://www.designandfunction.ch/temp/german/html/xxgerman_index.htm

    wie üblich klappt es im IE wunderbaar... nur der netscape streikt mal wieder...

    Wenn du im Netscape 4 (und nur die Version 4) positionierte Layer (egal ob <div> oder <layer>) verwendest, bildet diese ein neues, eigenständiges Dokument. Alle dort enthaltenen Bilder sind nicht mehr über ein simples document.images[name] erreichbar, sondern du mußt erstmal in den Layer gehen:

    document.layers[layerid].document.images[name]

    Tiefere Verschachtelung ist ebenfalls möglich.

    Du mußt also irgendwie testen, welcher Fall vorliegt.

    if (document.layers)
    {
      // Netscape 4-Variante
      document.layers[layerid].document.images[name]....
    }
    else
    {
      // alle anderen Browser (hoffentlich...)
      document.images[name]....
    }

    Im Prinzip solltest du, um Fehlermeldungen zu vermeiden, zumindest die wichtigsten verwendeten Objekte abfragen, also auch, ob document.images existiert, und ob document.images[name] existiert. Das verhindert nervige, beim Mouseover auftretende Fehler, wenn auf der Seite doch irgendein Problem existiert.

    was ich da mal aufgeschnappt habe ist das mit dem initialisieren der <div> ebenen:

    Das hast du wirklich nur aufgeschnappt. Das Problem ist keines, was beim Initialisieren auftritt, sonder es tritt immer auf, wenn du auf DIV-Layer zugreifen willst.

    - Sven Rautenberg

    --
    Signatur oder nicht Signatur - das ist hier die Frage!
    1. also so wie ich das nun verstanden habe heisst das ich muss in der "rollover-javascript-funktion" eine erweiterung machen:
      ein externes javascript ist zuständig für die mousovereffekte...:
      ##########################################
         ap="'";
         loaded=false;    // Define the variable used for testing if the page has loaded.
        if (document.images) {

      image0on = new Image();
        image0on.src = "../images/L_adresse_over.gif";
        image0off = new Image();
        image0off.src = "../images/L_adresse.gif";
      ..
      ..
      ..

      }
        function changeImages() {
        if (document.images) {
          for (var i=0; i<changeImages.arguments.length; i+=2) {
            document[changeImages.arguments[i]].src = eval(changeImages.arguments[i+1] + ".src");
          }  }}
      ##########################################

      die function: function changeImages() bleibt mal so stehen,

      if (document.images) {
          for (var i=0; i<changeImages.arguments.length; i+=2) {
            document[changeImages.arguments[i]].src = eval(changeImages.arguments[i+1] + ".src");
          }  }
      }
      else
      {
      document.layers[layerid].document.images

      for (var i=0; i<changeImages.arguments.length; i+=2) {
            document[changeImages.arguments[i]].src = eval(changeImages.arguments[i+1] + ".src");
          }  }
      }

      öööööhmmm,... hab da glaub ich ein durcheindander......!

      1. Moin!

        die function: function changeImages() bleibt mal so stehen,

        if (document.images) {
            for (var i=0; i<changeImages.arguments.length; i+=2) {
              document[changeImages.arguments[i]].src = eval(changeImages.arguments[i+1] + ".src");
            }  }
        }
        else

        Hier ist das Problem: Netscape 4 kennt auch document.images. Du mußt im Inneren von "if (document.images)" eine Abfrage "if (document.layers)" machen und dann entsprechend verzweigen. Der Name des Layers, in dem die Bilder sind, muß dabei natürlich auch bekannt sein - entweder ist er konstant, oder du mußt ihn als weiteren Parameter übergeben.

        {
        document.layers[layerid].document.images

        for (var i=0; i<changeImages.arguments.length; i+=2) {
              document[changeImages.arguments[i]].src = eval(changeImages.arguments[i+1] + ".src");
            }  }
        }

        Und hier ist eigentlich nichts von dem zu sehen, was ich erwähnte...

        - Sven Rautenberg

        --
        Signatur oder nicht Signatur - das ist hier die Frage!
        1. also,... hab mir das mal angeschaut und mich im netz noch schlau gemacht:
          was ich nun gefunden habe sollte eigentlich gehen...

          <html>
          <head><title></title>

          <script>
          <!--
          var preloadFlag = false; // sets flag that says all cached images aren't loaded yet
          preloadImages();
          function preloadImages() {
           if (document.images) {

          mainon = new Image();
                    mainon.src = "../images/m_g_links_over.gif";
            mainoff = new Image();
                    mainoff.src = "../images/m_g_links.gif";

          preloadFlag = true;

          }
          }

          function over(lname,iname){
              if (document.images && preloadFlag== 1){
                   if (document.layers){
                        document.layers[lname].document[iname].src=eval(iname+"on.src");
                   } else {
                        document[iname].src=eval(iname+"on.src");
                   }
              }
          }

          function out(lname,iname){
              if (document.images && preloadFlag== 1){
                   if (document.layers){
                        document.layers[lname].document[iname].src=eval(iname+"off.src");
                   } else {
                        document[iname].src=eval(iname+"off.src");
                   }
              }
          }

          // -->
          </script>

          </head>
          <body>
          <div id="hallo">
          <A HREF="#"
                         ONMOUSEOVER="over('hallo','mainon'); return true;"
                         ONMOUSEOUT="out('hallo','mainoff'); return true;">
                         <img src="../images/m_g_links.gif" name="main" id="main" border="0"></a>
          </div>
          </body>
          </html>

          nun krieg ich leider auch im IE noch ein fehler....

          aber der weg sollte mal richtig sein (besser als vorhin)