Avatar billede sqwer Nybegynder
30. november 2002 - 10:38 Der er 5 kommentarer og
1 løsning

Browsertjek

Jeg skal bruge "parent.location.search.length>0", hvilket vistnok kræver en browser med version >4, så hvordan tjekker jeg det bedst.
Jeg har set noget med if(document.layers || document.all), men så bliver min egen Opera overset, så det må da kunne gøres bedre (?).
Avatar billede Slettet bruger
30. november 2002 - 12:56 #1
Tjekker for generation 4 browsere eller derover:

if (parseInt(navigator.appVersion) >= 4) {
//4+
}
else {
//Bla bla bla!
}
Avatar billede o-zone Nybegynder
30. november 2002 - 12:58 #2
Generelt så kan man jo i javascript checke om en given funktion/attribut eksisterer ved at teste på den. Hvis den ikke findes giver den false, og findes den giver den true :-)

altså kunne man skrive noget i retning af:
if (parent.location.search.length) { do some stuff; } else { alert("Din browser understøtter ikke mit script - fede nar!"); }

Det vil så give fejl, hvis browseren ikke understøtter dele af linien ( f.eks. parent.location.search ), men det kan du jo sikre dig at den gør på nøjagtig samme måde:
if ((parent) & (parent.location) & (parent.location.search) & (parent.location.search.length))
{
  do some stuff;
}
else
{
  alert("Din browser understøtter ikke mit script - fede nar!");
}

P.S: Når jeg bruger & (i stedet for &&) sikrer jeg mig at scriptet hopper ud af if sætningen så snart een af forudsætningerne ikke er opfyldt ... på den måde slipper jeg for at få en fejl for at teste på "parent.location.search", hvis "parent.location" ikke findes :-)

Det var den teoretiske del af svaret. Hvis du stadig hellere vil teste på versionsnummeret af browseren (hvilket ikke burde være nødvendigt, da det er ulige meget sikrere at teste på om attributten findes, end om hvilket versionsnummer browseren har - det kunne jo være en browsertype du ikke kendte, med et stort versionsnummer), har jeg flikket følgende sammen:

---8<----------
var vers = "";
if (op) {versArray = navigator.userAgent.toLowerCase().match(/opera\s*([\d\.\/]+)/);}
else if (ns) {versArray = navigator.userAgent.toLowerCase().match(/netscape\s*([\d\.\/]+)/);}
else if (ie) {versArray = navigator.userAgent.toLowerCase().match(/msie\s*([\d\.\/]+)/);}
else vers = "ukendt";
if (vers!="ukendt") {vers = versArray[1];}
---8<----------
det giver dig det fulde versionsnummer på IE, netscape og IE browsere - er du kun interesseret i at vide om det er 4 eller over, kan du bytte "\d\.\/" ud med "\d" og derefter skrive
if (vers>=4) { do some stuff; } else { alert("Din browser understøtter ikke mit script - fede nar!"); }

:-)
Avatar billede o-zone Nybegynder
30. november 2002 - 13:07 #3
Damn ... det tog mig så lang tid at svare, at jeg var blevet logget ud bagefter :-(

phoenixv's svar er også korrekt, men I skal være opmærksomme på at appVersion ikke altid indeholder det man forventer (men til >=4 burde det fungere).

f.eks. vil phoenixv's script aflevere 4 for min IE 6.0 og min NS 6.2 afleverer 5 (hvilket og også er godt nok til dit formål, men ikke, hvis du tester for andet end 4)
Avatar billede o-zone Nybegynder
30. november 2002 - 13:09 #4
he he he ...
"IE, netscape og IE browsere" i mit første svar skulle selvfølgelig have været "IE, netscape og opera browsere" :"-)
Avatar billede Slettet bruger
30. november 2002 - 13:09 #5
Ja, de har det med at snyde, de browsere. De er bange for, at uerfarne programmørers gamle scripts vil udelukke nye browsere, fordi de kun tjekker for en browserversion og ikke en verison eller højere.
Avatar billede sqwer Nybegynder
30. november 2002 - 15:51 #6
Takker.
Interessant oplysning om & og &&, jeg troede egentlig den sprang resten over for &&. Hvorfor skal man så overhovedet bruge &&, kan man ikke bare nøjes med & altid?
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