/ 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
Menuscript virker ikke i Netscape/Mozilla
Fra : Erik Ginnerskov


Dato : 29-02-04 18:33

Hej NG

På denne side:

http://www.hjemmesideskolen.dk/html/testsider/slidemenu.htm

.... har jeg en menu, der ved onMouseOver skal glide ind i vinduet fra
venstre. Det virker fint i Opera og IE, men i Mozilla (1.5) og NS 7 virker
det ikke. Jeg kan pt. ikke prøve det i tidligere versioner.

Kan scriptet modificeres, så det virker i alle browserne?

Har mistanke om, at det er indenfor linjerne 9-17, at der skal pilles, men
har ikke kunnet få det til at virke.
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://hjem.get2net.dk/egin



 
 
Knud Gert Ellentoft (29-02-2004)
Kommentar
Fra : Knud Gert Ellentoft


Dato : 29-02-04 19:04

"Erik Ginnerskov" <egin@spam.invalid> skrev :

>På denne side:
>
> http://www.hjemmesideskolen.dk/html/testsider/slidemenu.htm
>
>... har jeg en menu, der ved onMouseOver skal glide ind i vinduet fra
>venstre. Det virker fint i Opera og IE, men i Mozilla (1.5) og NS 7 virker
>det ikke. Jeg kan pt. ikke prøve det i tidligere versioner.

Kan ikke hjælpe med problemet, men den menu er nu opfundet for
lang tid siden.

Findes på dynamicdrive og jeg har brugt den på
http://home13.inet.tele.dk/smedpark/webhjaelp/popup/popup.htm
--
Knud

Lasse Reichstein Nie~ (29-02-2004)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 29-02-04 21:33

"Erik Ginnerskov" <egin@spam.invalid> writes:

> På denne side:
>
> http://www.hjemmesideskolen.dk/html/testsider/slidemenu.htm
>
> ... har jeg en menu, der ved onMouseOver skal glide ind i vinduet fra
> venstre. Det virker fint i Opera og IE, men i Mozilla (1.5) og NS 7 virker
> det ikke. Jeg kan pt. ikke prøve det i tidligere versioner.
>
> Kan scriptet modificeres, så det virker i alle browserne?

Først og fremmest fejler scriptet fuldstændigt hvis Javascript er
slået fra. Det er ikke godt design at navigationen mangler for folk uden
Javascript. Altså: Menuen burde være synlig som default og blive scrollet
ud hvis Javascript er tilgængeligt.

Hmm. Faktisk har du jo koden som HTML, men skriver den *igen* med
Javascript. Endda med samme id, hvilket er klart forkert.

Du behøver ikke bruge <layer> for at gøre NS4 glad. Du kan lige så godt
bruge et absolut placeret div-element. Det betyder det samme.

Et hurtigt kig på koden viser:
---
var ns4=document.layers?1:0
var ie4=document.all?1:0
var ns6=document.getElementById&&!document.all?1:0
var mozilla=document.getElementById&&!document.all?1:0
---
Det er et dårligt tegn. Variabelnavnene er ikke gode, fordi testene ikke
genkender netop disse browsere (der er mange andre browsere der også
vil matche en eller flere af disse). Browser detection er en skidt idé
til at begynde med.

> Har mistanke om, at det er indenfor linjerne 9-17, at der skal pilles, men
> har ikke kunnet få det til at virke.

Fejlen (den afgørende af dem) er at du har skrevet
style="left:-150"
Der mangler enheden, det skal være:
style="left:-150px"
Mozilla ignorerer (korrekt) den fejlagtige deklaration, så når du kommer til
parseInt(themenu.left), så giver det ikke et tal.

Generelt kunne koden godt være lidt pænere indenteret. Den er svær at
overskue. Jeg anbefaler at man *altid* sætter semikolen efter statements
og sætter { og } omkring if-grene, også selvom der kun står en statement
i blokken (endnu :).

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

Erik Ginnerskov (01-03-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 01-03-04 13:55


"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev

> > http://www.hjemmesideskolen.dk/html/testsider/slidemenu.htm

> Et hurtigt kig på koden viser:
> ---
> var ns4=document.layers?1:0
> var ie4=document.all?1:0
> var ns6=document.getElementById&&!document.all?1:0
> var mozilla=document.getElementById&&!document.all?1:0
> ---
> Det er et dårligt tegn. Variabelnavnene er ikke gode, fordi testene ikke
> genkender netop disse browsere (der er mange andre browsere der også
> vil matche en eller flere af disse). Browser detection er en skidt idé
> til at begynde med.

Nu har jeg ikke skrevet koden, kun tilføjet linjen med mozilla i håb om, at
det så ville virke. Alternative forslag?

> style="left:-150"
> Der mangler enheden, det skal være:
> style="left:-150px"
> Mozilla ignorerer (korrekt) den fejlagtige deklaration, så når du kommer
til
> parseInt(themenu.left), så giver det ikke et tal.

Har nu tilføjet en enhed og har derved opnået, at Mozilla sætter menuen
samme sted ved load af siden, som IE og Opera. Men den vil stadig ikke glide
ud ved onMouseOver.

> Generelt kunne koden godt være lidt pænere indenteret. Den er svær at
> overskue. Jeg anbefaler at man *altid* sætter semikolen efter statements
> og sætter { og } omkring if-grene, også selvom der kun står en statement
> i blokken (endnu :).

OK, det har jeg så rettet lidt op på. Det er dog ikke overalt, jeg kan
slippe af sted med at putte {} ind, da det så vil 'slå menuen ihjel' i IE og
Opera.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://hjem.get2net.dk/egin



Lasse Reichstein Nie~ (01-03-2004)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 01-03-04 20:11

"Erik Ginnerskov" <egin@spam.invalid> writes:

[browserdetektion]
> Nu har jeg ikke skrevet koden, kun tilføjet linjen med mozilla i håb om, at
> det så ville virke. Alternative forslag?

Lav kode der virker til standarden. Udvid med fall-backs til de browsere
der ikke understøtter standarden, men alligevel skal kunne bruge siden
(ofte er det kun IE5+ der er relevant).

Brug feature detection, ikke browser detection (altså: test for
document.getElementById hvis du skal bruge netop denne funktion, men
brug det ikke til at udlede at andre funktioner også findes).

Men det er råd der gælder hvis man skriver ny kode, det hjælper ikke
alverden hvis man vil have den gamle kode til at virke.

> Har nu tilføjet en enhed og har derved opnået, at Mozilla sætter menuen
> samme sted ved load af siden, som IE og Opera. Men den vil stadig ikke glide
> ud ved onMouseOver.

Det vil den for mig i Mozilla FireFox.

> OK, det har jeg så rettet lidt op på. Det er dog ikke overalt, jeg kan
> slippe af sted med at putte {} ind, da det så vil 'slå menuen ihjel' i IE og
> Opera.

Det vil næppe slå noget som helst ihjel hvis de er placeret rigtigt.
Brug evt. JSLint til at validere Javascript:
<URL:http://www.crockford.com/javascript/jslint.html>

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

Erik Ginnerskov (02-03-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 02-03-04 00:51


"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev

> [browserdetektion]
> > Nu har jeg ikke skrevet koden, kun tilføjet linjen med mozilla i håb om,
at
> > det så ville virke. Alternative forslag?
>
> Lav kode der virker til standarden. Udvid med fall-backs til de browsere
> der ikke understøtter standarden, men alligevel skal kunne bruge siden
> (ofte er det kun IE5+ der er relevant).
>
> Brug feature detection, ikke browser detection (altså: test for
> document.getElementById hvis du skal bruge netop denne funktion, men
> brug det ikke til at udlede at andre funktioner også findes).

Jeg tror, jeg skrotter den side. Vil folk have en menu i den stil, kan de
hente den hos Dynamic Drive, så jeg sætter i stedet link der til.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://hjem.get2net.dk/egin



Jens Gyldenkærne Cla~ (29-02-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 29-02-04 21:36

Erik Ginnerskov skrev:

> http://www.hjemmesideskolen.dk/html/testsider/slidemenu.htm
>
> ... har jeg en menu, der ved onMouseOver skal glide ind i
> vinduet fra venstre. Det virker fint i Opera og IE, men i
> Mozilla (1.5) og NS 7 virker det ikke. Jeg kan pt. ikke prøve
> det i tidligere versioner.

Prøv at åbne Mozillas javascriptkonsol - så kan du få nogle ideer
til hvorfor det ikke virker. Der er 8 advarsler når jeg åbner din
side.

Browsersnifferdelen af scriptet virker i mine øjne gammeldags - det
er følgende fire linjer (de fire første):

var ns4=document.layers?1:0
var ie4=document.all?1:0
var ns6=document.getElementById&&!document.all?1:0
var mozilla=document.getElementById&&!document.all?1:0

Kører man Mozillas javascript-debugger, viser det sig også at
samtlige ovenstående fire variable bliver undefined.

Man kunne bruge typeof(document.all) i stedet for at tilgå den
direkte - jeg vil tro at hele linjen fejler når der henvises til en
ikke-eksisterende egenskab.

Men umiddelbart virker de første fire linjer ikke lovende i forhold
til hvad resten af scriptet kan tilbyde. Hvis den menu Knud
henviser til kan det samme, vil jeg foreslå dig at benytte den i
stedet.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Lasse Reichstein Nie~ (01-03-2004)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 01-03-04 00:20

Jens Gyldenkærne Clausen <jens@gyros.invalid> writes:

> Browsersnifferdelen af scriptet virker i mine øjne gammeldags - det
> er følgende fire linjer (de fire første):
>
> var ns4=document.layers?1:0
> var ie4=document.all?1:0
> var ns6=document.getElementById&&!document.all?1:0
> var mozilla=document.getElementById&&!document.all?1:0
>
> Kører man Mozillas javascript-debugger, viser det sig også at
> samtlige ovenstående fire variable bliver undefined.

Det er underligt. Alle fire skulle få en værdi (enten 1 eller 0 (som
burde være true elle false!)).

Jeg får ingen advarsler i min Mozilla FireFox (0.8) ... ah, før jeg
slår "Strict javascript warnings" til. Så får jeg otte. De fire er
referencerne til document.all og document.layers, som der ikke er noget
i vejen med. De andre er assignment til udefinerede variable, som
er lovligt, men ikke så pænt - deklarer variable før de bruges, det
hjælper gevaldigt på læsbarheden!

> Man kunne bruge typeof(document.all) i stedet for at tilgå den
> direkte - jeg vil tro at hele linjen fejler når der henvises til en
> ikke-eksisterende egenskab.

Nej, det er fuldt lovligt at læse en ikke-eksisterende objekt-egenskab
i Javascript. Værdien bliver "undefined". Det er den normale måde at
tjekke om en egenskab findes (i hvert fald for egenskaber der er
objekt-referencer, hvilket gælder for alle de ovenstående).

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

Erik Ginnerskov (01-03-2004)
Kommentar
Fra : Erik Ginnerskov


Dato : 01-03-04 14:07


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev

> > http://www.hjemmesideskolen.dk/html/testsider/slidemenu.htm


> Prøv at åbne Mozillas javascriptkonsol - så kan du få nogle ideer
> til hvorfor det ikke virker. Der er 8 advarsler når jeg åbner din
> side.

Den kan jeg ikke få til at fungere. Er der et sted, hvor man kan læse sig
til brugen af det værktøj?

> Browsersnifferdelen af scriptet virker i mine øjne gammeldags - det
> er følgende fire linjer (de fire første):
>
> var ns4=document.layers?1:0
> var ie4=document.all?1:0
> var ns6=document.getElementById&&!document.all?1:0
> var mozilla=document.getElementById&&!document.all?1:0
>
> Kører man Mozillas javascript-debugger, viser det sig også at
> samtlige ovenstående fire variable bliver undefined.
>
> Man kunne bruge typeof(document.all) i stedet for at tilgå den
> direkte - jeg vil tro at hele linjen fejler når der henvises til en
> ikke-eksisterende egenskab.

Hvorledes skal de linjer så formuleres - min forståelse for javascript kan
dsværre ligge på et meget lille sted.

> Men umiddelbart virker de første fire linjer ikke lovende i forhold
> til hvad resten af scriptet kan tilbyde. Hvis den menu Knud
> henviser til kan det samme, vil jeg foreslå dig at benytte den i
> stedet.

Hvis det her kun drejede sig om at udvikle en side og til formålet finde en
passende menu, ville jeg uden yderligere betænkning gøre det. Men jeg ville
gerne prøve at forstå scriptet. Kan jeg - med jeres hjælp - få det til at
virke, kan jeg lære noget af det.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://hjem.get2net.dk/egin



Jens Gyldenkærne Cla~ (01-03-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-03-04 23:00

Lasse Reichstein Nielsen skrev:

> Jeg får ingen advarsler i min Mozilla FireFox (0.8) ... ah,
> før jeg slår "Strict javascript warnings" til. Så får jeg
> otte.

- jeg burde nok have pointeret at jeg har strict warnings slået
til.

> De andre er assignment til udefinerede variable, som er
> lovligt, men ikke så pænt - deklarer variable før de bruges,
> det hjælper gevaldigt på læsbarheden!

Det mærkelige er bare at Venkman-debuggeren ikke ville vise mig en
værdi for de fire variable. Men jeg er ikke helt stiv i at bruge
den, så det kan have været en fejl 40 herfra.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (01-03-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-03-04 23:03

Erik Ginnerskov skrev:

> Den kan jeg ikke få til at fungere. Er der et sted, hvor man
> kan læse sig til brugen af det værktøj?

Jeg googlede mig til følgende side:
<http://www.svendtofte.com/code/learning_venkman/>. Jeg har ikke
selv læst den (endnu).



> Hvorledes skal de linjer så formuleres - min forståelse for
> javascript kan dsværre ligge på et meget lille sted.

Lyt hellere til Lasse - han er eksperten her. Men hvis det script
du har fundet ikke er meget specialiseret, så overvej at lede efter
et andet der kan det samme og hvor koden er mere moderne.
Browsersnifning er generelt dårligt - featuresnifning er bedre.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

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

Månedens bedste
Årets bedste
Sidste års bedste