30. november 2002 - 10:38Der 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 (?).
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!"); }
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)
he he he ... "IE, netscape og IE browsere" i mit første svar skulle selvfølgelig have været "IE, netscape og opera browsere" :"-)
Synes godt om
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.
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?
Synes godt om
Ny brugerNybegynder
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.