/ 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
problem med menu !!
Fra : Ham Selv


Dato : 11-02-03 09:49

"Hej

Jeg har et lille problem med min menu på www.moestrup.net .

Mn menu virker ikke i Opera 6. Er der nogle, der kan finde svaret på dette ?

På forhånd tak."

mvh

Danny



 
 
Knud Gert Ellentoft (11-02-2003)
Kommentar
Fra : Knud Gert Ellentoft


Dato : 11-02-03 16:00

"Ham Selv" <d.moestrup@image.dk> skrev :

>Mn menu virker ikke i Opera 6. Er der nogle, der kan finde svaret på dette ?

I Opera 7 virker den, hvis man lader Opera identificerer sig som
IE 6.

Så vidt jeg ved, så forstår Opera ikke innerwidth og innerheight
når den bliver identificeret som Opera.

--
Knud - http://home13.inet.tele.dk/smedpark/
Når der svares på et indlæg, svar venligst under det citerede og
skær venligst det væk, du ikke svarer på, ellers ryger du i killfiltret.
Svar kun i nyhedsgruppen - tak! E-mails besvares ikke.

Lasse Reichstein Nie~ (11-02-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 11-02-03 16:31

Knud Gert Ellentoft <knudgert@mail.tele.dk> writes:

> "Ham Selv" <d.moestrup@image.dk> skrev :
>
> >Mn menu virker ikke i Opera 6. Er der nogle, der kan finde svaret på dette ?
>
> I Opera 7 virker den, hvis man lader Opera identificerer sig som
> IE 6.
>
> Så vidt jeg ved, så forstår Opera ikke innerwidth og innerheight
> når den bliver identificeret som Opera.

Det er kun Opera 6 der ændrer opførsel efter hvad den identificerer
sig som. Den eneste forskel jeg kender til, er at document.all kun
findes når O6 identificerer sig som IE. Både window.innerHeight og
window.innerWidth virker både med id sat til IE og Opera.

I Opera 7 er der ingen forskel på hvad man identificerer sig som. Der
er (næsten) alt standard-stridigt flyttet til Quirks mode, og alt
ikke-standard, men ikke standard-stridigt, virker hele tiden.

/L
--
Lasse Reichstein Nielsen - lrn@brics.dk
Ph.D. i datalogi søger stilling som software-udvikler i Øst- eller
Nordjylland. Curriculum Vitae: <URL:http://www.brics.dk/~lrn/cv.html>

Knud Gert Ellentoft (11-02-2003)
Kommentar
Fra : Knud Gert Ellentoft


Dato : 11-02-03 17:47

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

>I Opera 7 er der ingen forskel på hvad man identificerer sig som. Der
>er (næsten) alt standard-stridigt flyttet til Quirks mode, og alt
>ikke-standard, men ikke standard-stridigt, virker hele tiden.

I min Opera 7.01 virker menuen på moestrup.net ikke når den
bliver identificeret som Opera, men gør når Opera identificerer
sig som IE 6.

--
Knud - http://home13.inet.tele.dk/smedpark/
Når der svares på et indlæg, svar venligst under det citerede og
skær venligst det væk, du ikke svarer på, ellers ryger du i killfiltret.
Svar kun i nyhedsgruppen - tak! E-mails besvares ikke.

Lasse Reichstein Nie~ (11-02-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 11-02-03 18:07

Knud Gert Ellentoft <knudgert@mail.tele.dk> writes:

> I min Opera 7.01 virker menuen på moestrup.net ikke når den
> bliver identificeret som Opera, men gør når Opera identificerer
> sig som IE 6.

Det skyldes nok snarere siden, der bruger browser-navnet til at skifte
opførsel efter. Hvis jeg ændrer i scriptet og skriver
this.ie6=true;
så virker det også med ID sat til Opera.

/L
--
Lasse Reichstein Nielsen - lrn@brics.dk
Ph.D. i datalogi søger stilling som software-udvikler i Øst- eller
Nordjylland. Curriculum Vitae: <URL:http://www.brics.dk/~lrn/cv.html>

RoJo (11-02-2003)
Kommentar
Fra : RoJo


Dato : 11-02-03 20:33

"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev i en meddelelse
news:smuukaph.fsf@hotpop.com...
> Knud Gert Ellentoft <knudgert@mail.tele.dk> writes:
>
> > I min Opera 7.01 virker menuen på moestrup.net ikke når den
> > bliver identificeret som Opera, men gør når Opera identificerer
> > sig som IE 6.
>
> Det skyldes nok snarere siden, der bruger browser-navnet til at skifte
> opførsel efter. Hvis jeg ændrer i scriptet og skriver
> this.ie6=true;
> så virker det også med ID sat til Opera.

Hmmm, hvor ændrer du det henne??

mvh
RoJo



Lasse Reichstein Nie~ (11-02-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 11-02-03 20:51

"RoJo" <ronnij@mail1.stofanet.dk> writes:

> "Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev i en meddelelse
> news:smuukaph.fsf@hotpop.com...

>> Hvis jeg ændrer i scriptet og skriver
>> this.ie6=true;
>> så virker det også med ID sat til Opera.

>
> Hmmm, hvor ændrer du det henne??

I koden til menuen. Højreklik på menuen og vælg "view source", der er
et script i toppen der forsøger at genkende browsere. Det er klar
forældet (genkender Opera 5, men ikke engang Opera 6).

Det er *ikke* et fix der skal bruges i praksis, da alle browsere så
bliver identificeret som IE.

Problemet er nok at Opera 7 ikke bliver genkendt som browser, og at
scriptet ikke har en god default-opførsel.

/L
--
Lasse Reichstein Nielsen - lrn@brics.dk
Ph.D. i datalogi søger stilling som software-udvikler i Øst- eller
Nordjylland. Curriculum Vitae: <URL:http://www.brics.dk/~lrn/cv.html>

RoJo (11-02-2003)
Kommentar
Fra : RoJo


Dato : 11-02-03 21:02

"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev i en meddelelse
news:3cmuk359.fsf@hotpop.com...
> I koden til menuen. Højreklik på menuen og vælg "view source", der er
> et script i toppen der forsøger at genkende browsere. Det er klar
> forældet (genkender Opera 5, men ikke engang Opera 6).
>
> Det er *ikke* et fix der skal bruges i praksis, da alle browsere så
> bliver identificeret som IE.
>
> Problemet er nok at Opera 7 ikke bliver genkendt som browser, og at
> scriptet ikke har en god default-opførsel.

Oki, har du et fix, som vil forny koden ?

mvh
RoJo (en hjælper til Moestrup.net)



Lasse Reichstein Nie~ (12-02-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 12-02-03 02:55

"RoJo" <ronnij@mail1.stofanet.dk> writes:

> Oki, har du et fix, som vil forny koden ?

Prøv det her:
Tilføj/udskift tjek af Opera 6 og 7 til lib_bwcheck-funktionen
---
   this.opera5=this.agent.indexOf("Opera 5")>-1
   this.opera6=this.agent.indexOf("Opera 6")>-1
   this.opera7=this.agent.indexOf("Opera 7")>-1
this.opera=this.opera5||this.opera6||this.opera7;
   this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera);
   this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera);
   this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
   this.ie=this.ie4||this.ie5||this.ie6;
   this.mac=this.agent.indexOf("Mac")>-1;
   this.ns6=(this.dom && parseInt(this.ver) >= 5 && !this.opera);
   this.ns4=(document.layers && !this.dom);
   this.bw=(this.ie || this.ns4 || this.ns6 || this.opera)
---

Fjern de to første linjer af initFoldout-funktionen (den forsøger
at lave noget ekstra browsertjek, som sætter bw.opera5 selv for
Opera 6 og 7. Der er ikke brug for ekstra browsertjek).

(Jeg tror også at Opera 6 ikke bruger "px", så linjen for px skal måske
også ændres:
var px = bw.ns4||bw.opera5||bw.opera6?"":"px"
)

Det er et spændende eksempel på objektorienteret kode i Javascript, og
scriptet tager højde for mange browsere. Ganske flot. Jeg har dog den
ene ting at udsætte på det, at det bruger sit browsertjek som en
white-list. *Hvis* vi genkender browseren, så tillader vi at menuen
virker, ellers gør vi ikke. Det vil fejle for *alle* nye browsere,
hvilket ikke er hensigtsmæssigt - det kræver for meget arbejde at
holde det opdateret. Det skulle istedet teste for de DOM-egenskaber
der skal bruges, og lave det hele med DOM, og kun bruge
browser-tjekket som black-list. Hvis vi genkender en browser, så
tillader vi os at lave nogle undtagelser for den browser.

Altså: Have en default der virker i stedet for en der ikke virker.

/L
--
Lasse Reichstein Nielsen - lrn@brics.dk
Ph.D. i datalogi søger stilling som software-udvikler i Øst- eller
Nordjylland. Curriculum Vitae: <URL:http://www.brics.dk/~lrn/cv.html>

RoJo (14-02-2003)
Kommentar
Fra : RoJo


Dato : 14-02-03 00:50


"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev i en meddelelse
news:bs1iz2ii.fsf@hotpop.com...

> Prøv det her:
> Tilføj/udskift tjek af Opera 6 og 7 til lib_bwcheck-funktionen
> ---
> this.opera5=this.agent.indexOf("Opera 5")>-1
> this.opera6=this.agent.indexOf("Opera 6")>-1
> this.opera7=this.agent.indexOf("Opera 7")>-1
> this.opera=this.opera5||this.opera6||this.opera7;
> this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera);
> this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera);
> this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
> this.ie=this.ie4||this.ie5||this.ie6;
> this.mac=this.agent.indexOf("Mac")>-1;
> this.ns6=(this.dom && parseInt(this.ver) >= 5 && !this.opera);
> this.ns4=(document.layers && !this.dom);
> this.bw=(this.ie || this.ns4 || this.ns6 || this.opera)
> ---

Er gjort.

> Fjern de to første linjer af initFoldout-funktionen (den forsøger
> at lave noget ekstra browsertjek, som sætter bw.opera5 selv for
> Opera 6 og 7. Der er ikke brug for ekstra browsertjek).

Hvis disse fjernes, så bliver alle menupunkterne lagt ovenpå hinanden.

> (Jeg tror også at Opera 6 ikke bruger "px", så linjen for px skal måske
> også ændres:
> var px = bw.ns4||bw.opera5||bw.opera6?"":"px"
> )

Også ændret

> Det er et spændende eksempel på objektorienteret kode i Javascript, og
> scriptet tager højde for mange browsere. Ganske flot. Jeg har dog den
> ene ting at udsætte på det, at det bruger sit browsertjek som en
> white-list. *Hvis* vi genkender browseren, så tillader vi at menuen
> virker, ellers gør vi ikke. Det vil fejle for *alle* nye browsere,
> hvilket ikke er hensigtsmæssigt - det kræver for meget arbejde at
> holde det opdateret. Det skulle istedet teste for de DOM-egenskaber
> der skal bruges, og lave det hele med DOM, og kun bruge
> browser-tjekket som black-list. Hvis vi genkender en browser, så
> tillader vi os at lave nogle undtagelser for den browser.
> Altså: Have en default der virker i stedet for en der ikke virker.

Jeg ved ikke, hvordan jeg skal gribe det an. Denne menu er lavet for lang
tid siden.

Har du andre forslag ?? (og forresten tak for hjælpen indtil videre)

Mvh
RoJo




Lasse Reichstein Nie~ (14-02-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 14-02-03 11:19

"RoJo" <ronnij@mail1.stofanet.dk> writes:

> Hvis disse fjernes, så bliver alle menupunkterne lagt ovenpå hinanden.

Hvis de ikke fjernes, så bliver alle menupunkterne lagt oven på hinanden!
Men, det ser ud til at afhænge af om Opera identificerer sig som Opera
eller ej. Hvis den id'er som Opera, så virker det hvis linjen fjernes.
Hvis den id'er som IE, så virker det ikke alligevel.

Det nye er vist at Opera 7 ikke har "Opera 7" i navigater.userAgent
når de simulerer andre browsere.

Der skal altså en identifikation til, som kan gennemskue snyde-
identifikation. Jeg foreslår at skifte opera-identifikationen ud
med:
---
if (window.opera) {
    this.opera5=this.agent.indexOf("Opera 5")>-1
    this.opera6=this.agent.indexOf("Opera 6")>-1
    this.opera7=this.agent.indexOf("Opera 7")>-1
this.opera=true;
}
---
Desuden skal linjen der starter med "this.h=" ændres til
---
this.h= (bw.ie||bw.ns6||(bw.opera&&!bw.opera5))?this.el.offsetHeight:bw.ns4?this.ref.height:bw.opera5?this.css.pixelHeight:0;
---

> Har du andre forslag ?? (og forresten tak for hjælpen indtil videre)

Ovenstående linje er et eksempel på at mangle en god default. Hvis man
ikke matcher en af de kendte browsere, så virker det bare ikke
(this.h=0 giver netop en kollapset menu). En bedre rettelse ville
være:
---
this.h = bw.ns4 ? this.ref.height : (bw.opera5 ? this.css.pixelHeight : this.el.offsetHeight);
---
Det giver samme effekt som den foregående for alle genkendte browsere, og
det forsøget at bruge .offsetHeight på alle ikke-genkendte browsere også.

/L
--
Lasse Reichstein Nielsen - lrn@brics.dk
Ph.D. i datalogi søger stilling som software-udvikler i Øst- eller
Nordjylland. Curriculum Vitae: <URL:http://www.brics.dk/~lrn/cv.html>

RoJo (16-02-2003)
Kommentar
Fra : RoJo


Dato : 16-02-03 00:41


"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev i en meddelelse
news:wuk3qi65.fsf@hotpop.com...
> "RoJo" <ronnij@mail1.stofanet.dk> writes:
>
> > Hvis disse fjernes, så bliver alle menupunkterne lagt ovenpå hinanden.
>
> Hvis de ikke fjernes, så bliver alle menupunkterne lagt oven på hinanden!
> Men, det ser ud til at afhænge af om Opera identificerer sig som Opera
> eller ej. Hvis den id'er som Opera, så virker det hvis linjen fjernes.
> Hvis den id'er som IE, så virker det ikke alligevel.
>
> Det nye er vist at Opera 7 ikke har "Opera 7" i navigater.userAgent
> når de simulerer andre browsere.
>
> Der skal altså en identifikation til, som kan gennemskue snyde-
> identifikation. Jeg foreslår at skifte opera-identifikationen ud
> med:
> ---
> if (window.opera) {
> this.opera5=this.agent.indexOf("Opera 5")>-1
> this.opera6=this.agent.indexOf("Opera 6")>-1
> this.opera7=this.agent.indexOf("Opera 7")>-1
> this.opera=true;
> }
> ---
> Desuden skal linjen der starter med "this.h=" ændres til
> ---
> this.h=
(bw.ie||bw.ns6||(bw.opera&&!bw.opera5))?this.el.offsetHeight:bw.ns4?this.ref
..height:bw.opera5?this.css.pixelHeight:0;
> ---
>
> > Har du andre forslag ?? (og forresten tak for hjælpen indtil videre)
>
> Ovenstående linje er et eksempel på at mangle en god default. Hvis man
> ikke matcher en af de kendte browsere, så virker det bare ikke
> (this.h=0 giver netop en kollapset menu). En bedre rettelse ville
> være:
> ---
> this.h = bw.ns4 ? this.ref.height : (bw.opera5 ? this.css.pixelHeight :
this.el.offsetHeight);
> ---
> Det giver samme effekt som den foregående for alle genkendte browsere, og
> det forsøget at bruge .offsetHeight på alle ikke-genkendte browsere også.
>

Hmm, oookkkaaayyy.

Lasse jeg er ved, at være "kodedum" ... kan du evt. hjælpe mig med præcist,
at fortælle, hvad jeg skal skifte ud??

På forhånd tak

Mvh
RoJo



Lasse Reichstein Nie~ (16-02-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 16-02-03 02:11

"RoJo" <rjonassen@hotmail.com> writes:

> Lasse jeg er ved, at være "kodedum" ... kan du evt. hjælpe mig med præcist,
> at fortælle, hvad jeg skal skifte ud??

Ok.
Linjerne (fra linje 39):
---
   this.opera5=this.agent.indexOf("Opera 5")>-1
   this.opera6=this.agent.indexOf("Opera 6")>-1
   this.opera7=this.agent.indexOf("Opera 7")>-1
this.opera=this.opera5||this.opera6||this.opera7;
---
udskiftes med
---
if (window.opera) {
this.opera5=this.agent.indexOf("Opera 5")>-1
this.opera6=this.agent.indexOf("Opera 6")>-1
this.opera7=this.agent.indexOf("Opera 7")>-1
this.opera=true;
}
---

Linjen (nu linje 97):
---
   this.h= (bw.ie||bw.ns6)?this.el.offsetHeight:bw.ns4?this.ref.height:bw.opera5?this.css.pixelHeight:0;
---
udskiftes med:
---
this.h = bw.ns4 ? this.ref.height : (bw.opera5 ? this.css.pixelHeight : this.el.offsetHeight);
---

Linjerne (nu fra linje 145):
---
   bw.opera5 = (navigator.userAgent.indexOf("Opera")>-1 && document.getElementById)?true:false
   if (bw.opera5) bw.ns6 = 0
---
fjernes helt.

Så virker det i min Opera 7 ligegyldigt hvad den identificerer sig
som. Det skulle stadig virke i Opera 6 og 5, da de blev korrekt
identificerede under alle omstændigheder. Det var O7 der var svær at
genkende på navigator.appVersion, som ikke indeholder "Opera 7" når
den efterligner andre browsere.

/L
--
Lasse Reichstein Nielsen - lrn@brics.dk
Ph.D. i datalogi søger stilling som software-udvikler i Øst- eller
Nordjylland. Curriculum Vitae: <URL:http://www.brics.dk/~lrn/cv.html>

RoJo (16-02-2003)
Kommentar
Fra : RoJo


Dato : 16-02-03 08:57


"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev i en meddelelse
news:lm0hxc5y.fsf@hotpop.com...
>
> Så virker det i min Opera 7 ligegyldigt hvad den identificerer sig
> som. Det skulle stadig virke i Opera 6 og 5, da de blev korrekt
> identificerede under alle omstændigheder. Det var O7 der var svær at
> genkende på navigator.appVersion, som ikke indeholder "Opera 7" når
> den efterligner andre browsere.

Det virker ikke i min Opera 6.5

Mvh
RoJo



Lasse Reichstein Nie~ (16-02-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 16-02-03 12:16

"RoJo" <rjonassen@hotmail.com> writes:

> Det virker ikke i min Opera 6.5

En lidt mere precis fejlbesked gør det lettere at finde :)

Men ja, det virker ikke. Det gjorde det heller ikke før. Det skyldes
at #DivCont er sat til at have en højde på kun 100px. Sæt den op til
.... 300px eller 100% eller noget andet og større (som også ser pænt ud
i andre browsere og har plads til hele menuen i sig).

/L
--
Lasse Reichstein Nielsen - lrn@brics.dk
Ph.D. i datalogi søger stilling som software-udvikler i Øst- eller
Nordjylland. Curriculum Vitae: <URL:http://www.brics.dk/~lrn/cv.html>

RoJo (16-02-2003)
Kommentar
Fra : RoJo


Dato : 16-02-03 12:42


"Lasse Reichstein Nielsen" <lrn@hotpop.com> skrev i en meddelelse
news:ptpseasf.fsf@hotpop.com...
> "RoJo" <rjonassen@hotmail.com> writes:
>
> > Det virker ikke i min Opera 6.5
>
> En lidt mere precis fejlbesked gør det lettere at finde :)
>
> Men ja, det virker ikke. Det gjorde det heller ikke før. Det skyldes
> at #DivCont er sat til at have en højde på kun 100px. Sæt den op til
> ... 300px eller 100% eller noget andet og større (som også ser pænt ud
> i andre browsere og har plads til hele menuen i sig).
>

Cool, nu virker det.
Tak for hjælpen

Mvh
RoJo



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