Martin Mouritzen skrev:
> <script type="text/javascript">
> var ie = (navigator.appVersion.indexOf("MSIE") == -1 ? false :
> true);
Pas på med at bruge "MSIE" til at afgøre hvilken browser der er
tale om - flere browsere (bl.a. Opera) bruger MSIE i UserAgent for
blive medregnet som IE-browser af gamle scripts.
Generelt er browserdetektion noget skidt - det er langt bedre at
lave scripts der virker i alle nyere browsere, og så i øvrigt bruge
objekt/featuredetektion i stedet for.
Hvis man virkelig har brug for browserdetektion, ville jeg bruge
scriptet her: <
http://www.quirksmode.org/js/detect.html>.
NB: Der er ingen grund til at bruge en conditional til at returnere
en boolsk værdi.
x ? false : true svarer til !x (not x)
x ? true : false svarer til x
Dit ie-tjek kan derfor forkortes til:
var ie = !(navigator.appVersion.indexOf("MSIE") == -1);
- eller evt.
var ie = (navigator.appVersion.indexOf("MSIE") != -1);
> var ie = (navigator.appVersion.indexOf("MSIE") == -1 ? false :
> true);
>
> if (ie) {
> var script = document.createElement('script');
> script.src = 'enjavascriptfil.js';
> script.type = 'text/javascript';
> var head = document.getElementsByTagName('head').item(0);
Av av - det er lige netop eksempler som dette der demonstrerer
hvorfor man skal undgå browserdetektion. Du tester om browseren
kalder sig noget med IE - og går efterfølgende i gang med at
anvende avancerede javascriptfunktioner som createElement og
getElementsByTagName. Ved du om alle udgaver af IE understøtter
disse metoder?
Så vidt jeg kan se er getElementsByTagName først med i IE6 - og
scriptet herover vil følgelig generere en fejl i IE5.
Hvis man i stedet tjekker for de metoder man skal bruge, er man
langt bedre sikret mod fejl:
if (document.createElement && document.getElementsByTagName) {
// Browseren forstår de metoder vi skal bruge
}
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen