/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Virker ikke i Netscape/Mozilla
Fra : Ryan Jeppesen


Dato : 26-07-03 22:33

Halløj i ngen.

Jeg har dette js som virker fint i IE og Opera, men jeg kan ikke få
det til at virke i Netscape/Mozilla. Nogen ideer til hvad jeg kan gøre
for at få det til at virke i dem også??

Code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<SCRIPT LANGUAGE="JavaScript1.2" SRC="js/menu.js"></SCRIPT>
-----
</head>

<body onload="openandclose(10000)">
....
<div id="menu" style="position:absolute;top:160px;left:30px"></div>
....
</body>
</html>

menu.js :

var menublock=new Array()

menublock[0]="Arial;"+
          "3;"+   
          "000000;"+
          "1;"+   
          "Arial;"+
          "2;"+   
          "000000;"+
          "1;"+   
          "Produkter|#|;"+             
          "Brændeovne|1.html|_self;"+
          "Pejse|2.html|_self;"+
          "Tilbehør|3.html|_self;"
         
         
         
         
menublock[1]="Arial;"+
          "3;"+   
          "000000;"+
          "1;"+            
          "Arial;"+
          "2;"+   
          "000000;"+         
          "1;"+   
          "Profil|#|;"+
          "Læs som html|4.html|_self;"+
          "Læs som pdf|5.html|_self;"
         
menublock[2]="Arial;"+
          "3;"+            
          "000000;"+
          "1;"+   
          "Arial;"+
          "2;"+            
          "000000;"+
          "1;"+            
          "Kontakt Os|#|;"+   
          "Kontakt Formular|6.html|_self;"
         
             
             
var menusplit
var urlsplit
var font_weight_main
var font_weight_sub
         
var showsubmenus=new Array()
for (i=0;i<=menublock.length-1;i++) {
   showsubmenus[i]=-1
}

function openandclose(visi) {
   showsubmenus[visi]=(-1)*showsubmenus[visi]

   var menucontent=""

   for (i=0;i<=menublock.length-1;i++) {
      menusplit=menublock[i].split(";")
      urlsplit=menusplit[8].split("|")
      if (menusplit[3]==1) {font_weight_main="<b>"}
      if (menusplit[3]==0) {font_weight_main=""}
      if (menusplit[7]==1) {font_weight_sub="<b>"}
      if (menusplit[7]==0) {font_weight_sub=""}

      menucontent+=font_weight_main+"<a
href='javascriptenandclose("+i+")'><font face="+menusplit[0]+"
color="+menusplit[2]+"
size="+menusplit[1]+">"+urlsplit[0]+"</font></a><br>"
      if (showsubmenus[i]==1) {
         for (ii=9;ii<=menusplit.length-1;ii++) {
            urlsplit=menusplit[ii].split("|")

menucontent+=font_weight_sub+"&nbsp;&nbsp;&nbsp;<a
href="+urlsplit[1]+" target="+urlsplit[2]+"><font
face="+menusplit[4]+" color="+menusplit[6]+"
size="+menusplit[5]+">"+urlsplit[0]+"</font></a><br>"
         }
      }
   }
   
   if (document.all) {
      menu.innerHTML=menucontent
   }
   if (document.layers) {
      document.menu.document.write(menucontent)
      document.menu.document.close()
   }
   
}


På forhånd tak!!

/Ryan



 
 
Lasse Reichstein Nie~ (26-07-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 26-07-03 23:17

Ryan Jeppesen <mail@power-up.dk> writes:

> Halløj i ngen.
>
> Jeg har dette js som virker fint i IE og Opera, men jeg kan ikke få
> det til at virke i Netscape/Mozilla. Nogen ideer til hvad jeg kan gøre
> for at få det til at virke i dem også??

Jeg ville gå det hele igennem med en fin kam. Det er ikke den kønneste
kode jeg har set.

> <SCRIPT LANGUAGE="JavaScript1.2" SRC="js/menu.js"></SCRIPT>

Language-attributten er "deprecated" og type-attributten er påkrævet i
XHTML 1.1 (faktisk fra HTML 4 og frem), som du ville få at vide hvis
du forsøgte at validere siden.

Specielt skal man ikke sige "JavaScript1.2". Sig i det mindste
"JavaScript1.3" eller senere. Der er forskelle på 1.2 og senere
versioner af javascript i nogle subtile tilfælde (som man bør
undgå under alle omstændigheder, så man har ikke brug for
at lave v1.2 emulering i de browsere der kan det).

Selve problemet er nok her:

>    if (document.all) {
>       menu.innerHTML=menucontent
>    }
>    if (document.layers) {
>       document.menu.document.write(menucontent)
>       document.menu.document.close()
>    }

Mozilla har hverken document.all eller document.layers, så
der sker ikke noget.
Prøv følgende;

if (document.layers) {
var layerdoc = document.layers["menu"].document;
layerdoc.open();
layerdoc.write(menucontent);
layerdoc.close();
} else {
var elem;
if (document.all) {
elem = document.all['menu'];
} else if (document.getElementById) {
elem = document.getElementById("menu");
}
if (elem) {
elem.innerHTML = menucontent;
}
}

Det skulle (7-9-13) virke i Mozilla også.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

Ryan Jeppesen (27-07-2003)
Kommentar
Fra : Ryan Jeppesen


Dato : 27-07-03 18:55

Lasse Reichstein Nielsen <lrn@hotpop.com> wrote:

>Language-attributten er "deprecated" og type-attributten er påkrævet i
>XHTML 1.1 (faktisk fra HTML 4 og frem), som du ville få at vide hvis
>du forsøgte at validere siden.
>
>Specielt skal man ikke sige "JavaScript1.2". Sig i det mindste
>"JavaScript1.3" eller senere. Der er forskelle på 1.2 og senere
>versioner af javascript i nogle subtile tilfælde (som man bør
>undgå under alle omstændigheder, så man har ikke brug for
>at lave v1.2 emulering i de browsere der kan det).

Ok, det er hermed noteret :)

>
>Selve problemet er nok her:
>
>>    if (document.all) {
>>       menu.innerHTML=menucontent
>>    }
>>    if (document.layers) {
>>       document.menu.document.write(menucontent)
>>       document.menu.document.close()
>>    }
>
>Mozilla har hverken document.all eller document.layers, så
>der sker ikke noget.
>Prøv følgende;
>
> if (document.layers) {
> var layerdoc = document.layers["menu"].document;
> layerdoc.open();
> layerdoc.write(menucontent);
> layerdoc.close();
> } else {
> var elem;
> if (document.all) {
> elem = document.all['menu'];
> } else if (document.getElementById) {
> elem = document.getElementById("menu");
> }
> if (elem) {
> elem.innerHTML = menucontent;
> }
> }
>
>Det skulle (7-9-13) virke i Mozilla også.

Jeg kan umiddelbart ikke få det til at virke. Der er åbentbart et prob
med onLoad="openandclose(10000)", jeg får en object expected.

Ellers takker for hjælpen

/Ryan


Tobias Michaelsen (27-07-2003)
Kommentar
Fra : Tobias Michaelsen


Dato : 27-07-03 21:23

Ryan Jeppesen wrote:
> Lasse Reichstein Nielsen <lrn@hotpop.com> wrote:
>
....
> Jeg kan umiddelbart ikke få det til at virke. Der er åbentbart et prob
> med onLoad="openandclose(10000)", jeg får en object expected.
>
> Ellers takker for hjælpen
>
> /Ryan
>

Det er vel fordi du prøver at referere til et index der ikke findes.

---

function openandclose(visi) {
   showsubmenus[visi]=(-1)*showsubmenus[visi]

---

showsubmenus har kun 3 elementer [0-2], og du prøver at tilgå index 10000.

Der ud over er der ingen af linierne i din .js-fil der bliver afsluttet
med ; tegn.
Hvis det er sådan den ser ud i virkligheden, skal du nok få tilføjet dem.


Ryan Jeppesen (28-07-2003)
Kommentar
Fra : Ryan Jeppesen


Dato : 28-07-03 10:44

Tobias Michaelsen <tobias_at_michaelsen_dot_as@nowhere.net> wrote:

>Det er vel fordi du prøver at referere til et index der ikke findes.
>
Ja måske, jeg kan bare ikke lige se hvad det skulel være jeg referer
til.
>
>function openandclose(visi) {
>   showsubmenus[visi]=(-1)*showsubmenus[visi]
>
>---
>
>showsubmenus har kun 3 elementer [0-2], og du prøver at tilgå index 10000.

Har allerede prøvet at ændre dette, men det gir samme resultat.

>
>Der ud over er der ingen af linierne i din .js-fil der bliver afsluttet
>med ; tegn.
>Hvis det er sådan den ser ud i virkligheden, skal du nok få tilføjet dem.

Hmm, det virkede jo fjong inden jeg ændre det med nedenstående, så
skulle det vel heller ikke virke før, eller hvad?

if (document.layers) {
var layerdoc = document.layers["menu"].document;
layerdoc.open();
layerdoc.write(menucontent);
layerdoc.close();
} else {
var elem;
if (document.all) {
elem = document.all['menu'];
} else if (document.getElementById) {
elem = document.getElementById("menu");
}
if (elem) {
elem.innerHTML = menucontent;
}
}

Men jeg prøver!


Lasse Reichstein Nie~ (28-07-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 28-07-03 11:30

Ryan Jeppesen <mail@power-up.dk> writes:

> Tobias Michaelsen <tobias_at_michaelsen_dot_as@nowhere.net> wrote:
> >showsubmenus har kun 3 elementer [0-2], og du prøver at tilgå index 10000.
>
> Har allerede prøvet at ændre dette, men det gir samme resultat.

Det er ikke det der er problemet.

> Hmm, det virkede jo fjong inden jeg ændre det med nedenstående, så
> skulle det vel heller ikke virke før, eller hvad?

Det virker for mig, i IE6, Opera 7 og Mozilla, når jeg ændrer
skrive-delen til mit forslag. Altså, du må have gjort et eller andet
galt, men det er ikke til at sige hvad uden at se siden.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

Ryan Jeppesen (29-07-2003)
Kommentar
Fra : Ryan Jeppesen


Dato : 29-07-03 08:09

Lasse Reichstein Nielsen <lrn@hotpop.com> wrote:

>Det virker for mig, i IE6, Opera 7 og Mozilla, når jeg ændrer
>skrive-delen til mit forslag. Altså, du må have gjort et eller andet
>galt, men det er ikke til at sige hvad uden at se siden.
>
Hmm, prøvede lige at paste det ind igen og nu virker det dælme i dem
alle, så ja du har nok ret det var mig der havde gjort noget galt :)
Ved bare ikke hvad :)

Tak for hjælpen !!

/Ryan


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste