/ 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
<script src=xx> afhængig af et eller andet~
Fra : Allan Unnerup


Dato : 14-02-07 23:29

Kære Alle

Hvordan kan man få sourcen til at script til fx at være afhængig af, hvilken
browser man benytter?

Eksempel:
<script type="text/javascript" language="JavaScript" charset="ISO-8859-1"
src="http://as1.falkag.de/sel?cmd=jsc&wrd=&prf=&dat=47045&xl=468&yl=60&opt=0
">
</script>

Jeg vil gerne have det noget i stil med

<script type="text/javascript" language="JavaScript" charset="ISO-8859-1" if
(IE) then

src="http://as1.falkag.de/sel?cmd=jsc&wrd=&prf=&dat=47045&xl=468&yl=60&opt=0
" } >
</script>

Med venlig hilsen
Allan



 
 
Martin Mouritzen (15-02-2007)
Kommentar
Fra : Martin Mouritzen


Dato : 15-02-07 01:08

On Wed, 14 Feb 2007 23:28:44 +0100, "Allan Unnerup" <alu@udkik.dk>
wrote:

>Jeg vil gerne have det noget i stil med
>
><script type="text/javascript" language="JavaScript" charset="ISO-8859-1" if
>(IE) then
>
>src="http://as1.falkag.de/sel?cmd=jsc&wrd=&prf=&dat=47045&xl=468&yl=60&opt=0
>" } >
></script>

du kan f.eks. gøre følgende

<script type="text/javascript">
var ie = (navigator.appVersion.indexOf("MSIE") == -1 ? false : true);

if (ie) {
document.write('<scri' + 'pt type="text/javascript"
src="enjavascriptfil.js"></script>');
}
</script>


I nyere browsere kan du også bruge DOM til at tilføje med.

f.eks.:

<script type="text/javascript">
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);
head.appendChild(script);
}
</script>

--
Med venlig hilsen,
Martin Mouritzen.
http://www.siteloom.dk

Jens Gyldenkærne Cla~ (15-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 15-02-07 11:07

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

Martin Mouritzen (15-02-2007)
Kommentar
Fra : Martin Mouritzen


Dato : 15-02-07 14:51

On Thu, 15 Feb 2007 11:07:16 +0100, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:

>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.

Jeg er helt enig, men det var ikke det som OP spurgte om. Du har
selvfølgelig ret i at man lige skal gøre opmærksom på forskellen,
hvilket jeg ikke lige overvejede.

>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?

Nej, men hvis du kigger efter, så skrev jeg også "i nyere browsere".

--
Med venlig hilsen,
Martin Mouritzen.
http://www.siteloom.dk

Jens Gyldenkærne Cla~ (15-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 15-02-07 19:13

Martin Mouritzen skrev:

>>Av av - det er lige netop eksempler som dette der demonstrerer
>>hvorfor man skal undgå browserdetektion.

> Nej, men hvis du kigger efter, så skrev jeg også "i nyere
> browsere".

Det så jeg godt. Pointen er bare at dit eksempel netop ikke tjekker
om der er tale om "nyere browsere" - og dermed bliver scriptet
usikkert at bruge.

Man kan selvfølgelig vælge at være ligeglad med ældre browsere, men
når det som her er ganske enkelt at lave scriptet sikkert, er der
ingen grund til at undlade det.

--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information

Martin Mouritzen (16-02-2007)
Kommentar
Fra : Martin Mouritzen


Dato : 16-02-07 04:37

On Thu, 15 Feb 2007 19:13:11 +0100, "Jens Gyldenkærne Clausen"
<jens@gyros.invalid> wrote:

>Man kan selvfølgelig vælge at være ligeglad med ældre browsere, men
>når det som her er ganske enkelt at lave scriptet sikkert, er der
>ingen grund til at undlade det.

Jeg må faktisk indrømme at jeg synes at hvis folk kører med en ældre
browser end IE6, så er en side der ikke virker ordentligt deres
mindste problem. (Her tænker jeg mest på at det er direkte farligt at
bevæge sig rundt på nettet med en så gammel browser).

Man må trods alt også trække en grænse et eller andet sted.

--
Med venlig hilsen,
Martin Mouritzen.
http://www.siteloom.dk

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


Dato : 16-02-07 07:17

Martin Mouritzen <martin@siteloom.dk> writes:

> <script type="text/javascript">
> var ie = (navigator.appVersion.indexOf("MSIE") == -1 ? false : true);
>
> if (ie) {


Som sagt er IE-detekteringen ikke særlig præcis. Brug is stedet
betingede kommentarer ("conditional comments" hvis der skal Googles):
<!--[if IE]>
<script type="text/javascript">
....
</script>
<[end if]-->

> document.write('<scri' + 'pt type="text/javascript"
> src="enjavascriptfil.js"></script>');

Der er ingen grund til at splitte "<script" op. Det der til gengæld
skal splittes op er "</" i "</script>", så skriv i stedet:
document.write('<script type="text/javascript" src="enjavascriptfil.js"><\/script>')

/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.'

Benny Nissen (15-02-2007)
Kommentar
Fra : Benny Nissen


Dato : 15-02-07 06:39

Allan Unnerup wrote:
> Kære Alle
>
> Hvordan kan man få sourcen til at script til fx at være afhængig af, hvilken
> browser man benytter?

Det har du fået svar på, men er det ikke noget snavs du er ude i ?
Var det ikke bedre at lave koden, så den virker i alle (nyere) browsere
fra starten ?

--
Benny

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

Månedens bedste
Årets bedste
Sidste års bedste