Avatar billede grud Nybegynder
16. juli 2001 - 23:45 Der er 14 kommentarer og
1 løsning

Netscape 4.7 og en dropdown menu

Godaften – I kloge hoveder :-)

Jeg har lavet en dropdown menu i Dreamweaver. Den virker fint i IE og Netscape 6.0, men jeg kan ikke få den til at virke i Netscape 4.7. Jeg har ikke særlig meget forstand på JavaScripts – men jeg vil tro, at problemet kan løses med noget bedre JavaScript–  hvis NS altså overhovedet kan finde udad at vise layers...Er der nogen der ved. hvordan jeg løser problemet?? – Jeg har lagt den op på denne adresse; http://home1.stofanet.dk/kreativ – så kan I jo se, hvad jeg snakker om!! :-)
Avatar billede vandhunden Nybegynder
16. juli 2001 - 23:50 #1
Hvis du bruger disse funktioner til at vise og gemme layers, så virker det i IE5, NS4.7 og NS6:

<SCRIPT LANGUAGE=\"javascript>
NS4 = (document.layers)? true:false;
IE4 = (document.all)? true:false;
DOM = (document.getElementById)? true:false;

function vis(id) {
      if (NS4) document.layers[id].visibility = \"show\"
      else if (IE4) document.all[id].style.visibility = \"visible\"
      else if (DOM) document.getElementById(id).style.visibility = \"visible\"
}

function gem(id) {
      if (NS4) document.layers[id].visibility = \"hide\"
      else if (IE4) document.all[id].style.visibility = \"hidden\"
      else if (DOM) document.getElementById(id).style.visibility = \"hidden\"
}
</SCRIPT>
Avatar billede grud Nybegynder
17. juli 2001 - 00:02 #2
Tak for det hurtige svar :-)

Hmm, jeg synes ikke rigtigt det virker. Hvad gør jeg forkert?? - burde det første layer ikke virke nu?

<html>
<head>
<title>Netscape Menu</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
<SCRIPT LANGUAGE=\"javascript>
NS4 = (document.layers)? true:false;
IE4 = (document.all)? true:false;
DOM = (document.getElementById)? true:false;

function vis(Layer1) {
      if (NS4) document.layers[ID].visibility = \"show\"
      else if (IE4) document.all[ID].style.visibility = \"visible\"
      else if (DOM) document.getElementById(ID).style.visibility = \"visible\"
}

function gem(layer1) {
      if (NS4) document.layers[ID].visibility = \"hide\"
      else if (IE4) document.all[ID].style.visibility = \"hidden\"
      else if (DOM) document.getElementById(ID).style.visibility = \"hidden\"
}
</SCRIPT>

<script language=\"JavaScript\">
<!--
function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v==\'show\')?\'visible\':(v=\'hide\')?\'hidden\':v; }
    obj.visibility=v; }
}
//-->
</script>
<script language=\"JavaScript\">
<!--


function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf(\"?\"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}
//-->
</script>

</head>
<body bgcolor=\"#FFFFFF\">

<table width=\"760\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">
  <tr>
    <td colspan=\"4\" height=\"68\">&nbsp;</td>
  </tr>
  <tr bgcolor=\"#D8F2D7\">
    <td width=\"110\"onMouseOut=\"MM_showHideLayers(\'Layer1\',\'\',\'hide\')\" ><a href=\"#\" onMouseOver=\"MM_showHideLayers(\'Layer1\',\'\',\'show\')\">Menu
      1 </a></td>
    <td width=\"96\"onMouseOut=\"MM_showHideLayers(\'Layer2\',\'\',\'hide\')\" ><a href=\"#\" onMouseOver=\"MM_showHideLayers(\'Layer2\',\'\',\'show\')\">Menu
      2 </a></td>
    <td width=\"110\" onMouseOut=\"MM_showHideLayers(\'Layer3\',\'\',\'hide\')\" ><a  href=\"#\" onMouseOver=\"MM_showHideLayers(\'Layer3\',\'\',\'show\')\">Menu 3 </a></td>
  <td></td>
  </tr>
  <tr bgcolor=\"#FFFFFF\">
    <td width=\"110\">
      <div id=\"Layer1\" style=\"position:absolute; width:80px; height:91px; z-index:1; ; top: 81px; visibility: hidden; \" onMouseOver=\"MM_showHideLayers(\'Layer1\',\'\',\'show\')\" onMouseOut=\"MM_showHideLayers(\'Layer1\',\'\',\'hide\')\" >
        <br>
        <table width=\"119\" border=\"0\"  cellpadding=\"2\" cellspacing=\"0\" >
          <tr>
            <td bgcolor=\"#D8F2D7\" >Menu 1.1</td>
          </tr>
          <tr>
            <td bgcolor=\"#D8F2D7\" >Menu 1.2</td>
          </tr>
          <tr>
            <td bgcolor=\"#D8F2D7\" >Menu 1.3</td>
          </tr>
        </table>
      </div>
    </td>
    <td width=\"96\">
      <div id=\"Layer2\"  style=\"position:absolute; top:78px; width:74px; height:91px; z-index:2; visibility: hidden; \" onMouseOver=\"MM_showHideLayers(\'Layer2\',\'\',\'show\')\" onMouseOut=\"MM_showHideLayers(\'Layer2\',\'\',\'hide\')\">
        <table width=\"86\"  cellpadding=\"2\" cellspacing=\"0\" border=\"0\">
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td bgcolor=\"#D8F2D7\" >Menu 2.1 </td>
          </tr>
          <tr>
            <td bgcolor=\"#D8F2D7\" >Menu 2.2</td>
          </tr>
          <tr>
            <td bgcolor=\"#D8F2D7\" >Menu 2.3</td>
          </tr>
        </table>
      </div>
    </td>
    <td width=\"110\">
      <div id=\"Layer3\" style=\"position:absolute; top:77px; width:77px; height:91px; z-index:3; ; visibility: hidden; \" onMouseOver=\"MM_showHideLayers(\'Layer3\',\'\',\'show\')\" onMouseOut=\"MM_showHideLayers(\'Layer3\',\'\',\'hide\')\">
        <table width=\"110\" cellpadding=\"2\" cellspacing=\"0\" border=\"0\" bordercolor=\"#D8F2D7\">
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td bgcolor=\"#D8F2D7\" >Menu 3.1</td>
          </tr>
          <tr>
            <td bgcolor=\"#D8F2D7\" >Menu 3.2</td>
          </tr>
          <tr>
            <td bgcolor=\"#D8F2D7\" >Menu 3.3</td>
          </tr>
        </table>
      </div>
    </td>
    <td width=\"444\">&nbsp;</td>
  </tr> 
</table>
</body>
</html>
Avatar billede olebole Juniormester
17. juli 2001 - 03:33 #3
<ole>
I NS kan du ikke bruge mouse-events på <div> og <td>.
/mvh
</bole>
Avatar billede grud Nybegynder
17. juli 2001 - 10:21 #4
Øv, er der nogen der kan vise mig et eksempel på, hvordan jeg så løser problemet &#8211; uden behaviour på td og div?? &#8211; nu har jeg siddet og feddet godt og grundigt rundt i det, og jeg syntes ikke rigtigt at jeg kommer nogen steder...
Avatar billede vandhunden Nybegynder
17. juli 2001 - 12:09 #5
Du skal jo slette alle dine MM-scripts først! Og så skrive fx:

onMouseOver=\"vis(\'layer2\');\" onMouseOut=\"gem(\'layer2\');\"
   

/Andreas
Avatar billede grud Nybegynder
17. juli 2001 - 14:47 #6
OK - fair nok... :-)

Jeg vil mene, at det burde virke nu - men det gør det absolut ikke... hverken i IE eller NS. Hvad har jeg dog gjort - eller ikke gjort!!


<script language=\"javascript\">
NS4 = (document.layers)? true:false;
IE4 = (document.all)? true:false;
DOM = (document.getElementById)? true:false;

function vis(id) {
      if (NS4) document.layers[id].visibility = \"show\"
      else if (IE4) document.all[id].style.visibility = \"visible\"
      else if (DOM) document.getElementById(id).style.visibility = \"visible\"
}

function gem(id) {
      if (NS4) document.layers[id].visibility = \"hide\"
      else if (IE4) document.all[id].style.visibility = \"hidden\"
      else if (DOM) document.getElementById(id).style.visibility = \"hidden\"
}
</SCRIPT>



</head>
<body bgcolor=\"#FFFFFF\">

<table width=\"760\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">
  <tr>
    <td colspan=\"4\" height=\"68\">&nbsp;</td>
  </tr>
  <tr bgcolor=\"#D8F2D7\">
    <td width=\"110\"><a href=\"#\"  onMouseOver=\"vis(\'layer1\');\" onMouseOut=\"gem(\'layer1\');\">Menu 1</a></td>
    <td width=\"96\"><a href=\"#\" onMouseOver=\"vis(\'layer2\');\" onMouseOut=\"gem(\'layer2\');\">Menu 2</a></td>
    <td width=\"110\"><a href=\"#\" onMouseOver=\"vis(\'layer3\');\" onMouseOut=\"gem(\'layer3\');\">Menu 3</a></td>
  <td></td>
  </tr>
  <tr bgcolor=\"#FFFFFF\">
    <td width=\"110\">
      <layer id=\"Layer1\" onMouseOver=\"vis(\'layer1\');\" onMouseOut=\"gem(\'layer1\');\" style=\"position:absolute; top:81px; width:80px; height:91px; z-index:1; visibility:hidden\" >
        <br>
        <table width=\"119\" border=\"0\"  cellpadding=\"2\" cellspacing=\"0\" >
          <tr>
            <td bgcolor=\"#D8F2D7\" >Menu 1.1</td>
          </tr>
          <tr>
            <td bgcolor=\"#D8F2D7\" >Menu 1.2</td>
          </tr>
          <tr>
            <td bgcolor=\"#D8F2D7\" >Menu 1.3</td>
          </tr>
        </table>
      </layer>
    </td>
Avatar billede olebole Juniormester
17. juli 2001 - 14:59 #7
<layer> virker kun i NS4.x...brug <div> eller <span> - de er X-browser kompatible.

Som jeg skrev før, kan du ikke lave mouse-events (onmouseover & -out) på lag (positionerede <div>, <span>, etc). Du må lave det på et tekstlink eller et link\'et billede.
/mvh
Avatar billede grud Nybegynder
17. juli 2001 - 15:44 #8
Vil det sige, at jeg er tvunget til at lave mine menupunkter til gif&#8217;er?? Hvis det er tekst dækker det jo ikke hele div&#8217;en!

Ved I om det er muligt, at få NS til adlyde min position:absolute;? &#8211; den er ret ligeglad!
Avatar billede olebole Juniormester
17. juli 2001 - 16:03 #9
NS har det kanon-godt med position:absolute.
Ja, du er tvunget til at lave det med gif\'er til NS4.x.
Du kan bare skrive ganske alm. gåseøjne, som os andre, her på Eksperten...de virker - det gør dine entities ikke  :)
Avatar billede olebole Juniormester
17. juli 2001 - 16:10 #10
...og husk lige på, JavaScript er case-sensitive:
\"vis(\'Layer1\');\" ... ikke: \"vis(\'layer1\');\" , da dit lag jo hedder \'Layer1\'  :)
/mvh
Avatar billede grud Nybegynder
17. juli 2001 - 16:13 #11
Ups. Jeg godt se at mine beskeder ikke ser alt for godt ud.

Det var ærgerligt at man skal bruge gifer til NS &#8211; det tror jeg nemlig ikke at jeg vil, det bliver alt for langsomt at opdatere.

Hvis jeg ikke skriver nogen left ind i diven, så bliver diven placeret i forhold til tabellen (også hvis den er centret) - Det gør den ikke i NS (den kaster dem alle ud i højre side).

Hvad er jeres vurdering skal man stadig optimere til NS 4.x
Avatar billede olebole Juniormester
17. juli 2001 - 16:23 #12
Jaja...du placerer dem jo absolut - og ikke relativt, så det er for så vidt rigtig nok  :o)

Det er ikke vores vurdering, der er interessant, men din målgruppes sammensætning. Det er den - og KUN den - der kan diktere dig, hvilken browser, du skal optimere for  :)
/mvh
Avatar billede grud Nybegynder
17. juli 2001 - 17:48 #13
OK - jeg siger mange tak for de vise ord. Selvom jeg havde nu håbet på, at jeg kunne løse problemet ved at lave et smart JavaScript! Løsningen bliver nok; at hvis folk vil se min side må de bruge en \"rigtig\" browser.
Avatar billede olebole Juniormester
17. juli 2001 - 17:55 #14
1. Jamen, det virker jo ikke i en rigtig browser...!  =o)
2. Den gode løsning er at skrive de rigtige koder.
3. At lave de par gif\'er tager to minutter, hvis du laver en \'action\' i PhotoShop eller ImageReady til at lave dem med...det kan da ikke tage \'alt for lang tid at opdatere\'...tværtimod!
/mvh
Avatar billede vandhunden Nybegynder
17. juli 2001 - 23:57 #15
Ok, jeg havde ikke lige opdaget et du brugte layers i stedet for div\'s (som er hvad jeg normalt kalder layers, skørt...)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester