Avatar billede per1291 Nybegynder
08. august 2008 - 16:22 Der er 6 kommentarer og
1 løsning

Hvordan tjekke om browseren kender AxtiveX?

Hej -

Mit søgeprogram "Find Melodien" kan hentes på adressen http://www.onlinebooks.dk/findmelodien. Brugeren vil som det første blive bedt om at lægge en kopi af HTML-filen på sin computer, idet programmet ikke kan køres fra Nettet.

Jeg kunne tænke mig at indlægge endnu en besked til brugeren, nemlig hvis man forsøger at køre det fra en "forkert" browser. Programmet benytter sig nemlig af noget ActiveX-kode (hvilket vistnok kun kan fortolkes af Internet Explorer).

Nuvel, jeg ønsker ikke at spørge direkte hvilken browser der benyttes. I stedet ønsker jeg at spørge mere konkret, om den aktuelle browser kan håndtere ActiveX.

Jeg har forsøgt med denne linje:

if (Fo = new ActiveXObject("Scripting.FileSystemObject")) {vejledning};

... men Firefox laver ingenting som resultat af dette tjek.

Hvad burde jeg spørge om i stedet?

Med venlig hilsen
Per Kejser-Andersen
Avatar billede per1291 Nybegynder
08. august 2008 - 16:25 #1
Undskyld, jeg mente omvendt:

if (Fo = new ActiveXObject("Scripting.FileSystemObject"))
{fortsæt}
else
{vejledning}

Hilsen Per
Avatar billede per1291 Nybegynder
09. august 2008 - 00:08 #2
Min svigersøn Alex kendte svaret, nemlig try/catch:

try
  {
  Fo = new ActiveXObject("Scripting.FileSystemObject");
  [... fortsæt ...]
  }
  catch(e)
  {
  [... vejledning ...]
  }

Men da han ikke er medlem af dette netværk, må jeg give mig selv pointene.

Hilsen Per
Avatar billede olebole Juniormester
09. august 2008 - 16:15 #3
<ole>

try/catch regnes sjældent med under 'god kodestil' - og aldrig, hvis der er andre muligheder. I denne situation kan du i stedet spørge, om browseren kan håndtere ActiveX:
    if (window.ActiveXObject) {
        // ActiveX kan bruges
    } else {
        // ActiveX kan ikke bruges
    }

/mvh
</bole>
Avatar billede per1291 Nybegynder
09. august 2008 - 16:49 #4
Javel. Det tjek du foreslår lyder osse bedre. Så nu bruger jeg det i stedet for, mange tak. Opretter lige et point-spørgsmål.

Hilsen Per
Avatar billede jhkl Nybegynder
09. august 2008 - 19:32 #5
ole, hvis ActiveX er understøttet, men der nægtes adgang til det pågældende objekt, er der så en smartere måde end try-catch?
Avatar billede olebole Juniormester
09. august 2008 - 21:46 #6
Nej, hvis man er nødt til at teste på et AX-objekt, kan man kun gøre det i en try/catch.

Du burde forøvrigt tjekke HTA (HyperText Application) ud:
    http://msdn.microsoft.com/en-us/library/ms536471(vs.85).aspx
    http://msdn.microsoft.com/en-us/library/ms536473(VS.85).aspx

Det er en HTML-fil, som indeholder et application element - og hvis filnavn har endelsen .hta

En HTA ligner et alm. Windows program og har specielle sikkerhedsregler, så det er muligt at afvikle AX uden advarselsboksen, brugeren får ved en alm. HTML-fil.

Du bør være opmærksom på, at hvis brugeren har Norton Anti Virus, vil den brokke sig seriøst og give en ret skræmmende advarselsboks, når et script, der gør brug af fileSystemObject, bliver kaldt.
Avatar billede olebole Juniormester
09. august 2008 - 21:59 #7
Vedr. try/catch, så kan det, jeg skrev før, nok misforstås  =)

try/catch er en ganske udmærket løsning, når man ellers vil udløse en fejl - som f.eks. ved instantieringen af et AX-objekt, der muligvis ikke eksisterer på den pågældende maskine. Det findes der ikke andre muligheder for at teste i JScript.

Der, hvor man normalt regner try/catch for skidt kodestil, er, hvor man vil teste på en metode eller property - eller om et HTML element eksisterer i DOM'en eller hukommelsen. I sådanne tilfælde bør man i stedet bruge en alm. if-betingelse.

Grunden er, at alle fejl, der måtte opstå mellem try-delens klammer, undertrykkes. Hvis ikke der tjekkes grundigt på error objektet, som sendes til catch funktionen, er der altså ikke styr på ret meget.
Så er det bedre at indsnævre til at spørge om præcis den ene ting, man vil vide  ;o)
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