Avatar billede rasmuslh Nybegynder
26. marts 2008 - 20:32 Der er 17 kommentarer og
1 løsning

Tjekke brugeren OS language

Hejsa

jeg har et lille problem jeg bokser lidt med. Jeg har en side hvor en bruger skal directes alt efter hans OS language - altså ikke browser language!

Jeg har forsøgt at bruge:

navigator.systemLanguage

... men den tjekker tilsyneladende default sproget der er sat i browseren. Findes der et funktion der kan finde brugeren OS?

Mvh.
Rasmus
Avatar billede olebole Juniormester
26. marts 2008 - 20:42 #1
<ole>

Vil det sige, du vil redirecte mig til en side, hvor teksten står på engelsk, fordi min Windows tilfældigvis er engelsk? Hvorfor ikke lade serveren tjekke, hvor brugeren befinder sig, geografisk? Alt efter, hvad du bruger på serveren:
    http://www.eksperten.dk/artikler/568
    http://www.eksperten.dk/artikler/567
    http://www.eksperten.dk/artikler/565
    http://www.eksperten.dk/artikler/564

/mvh
</bole>
Avatar billede rasmuslh Nybegynder
26. marts 2008 - 20:45 #2
Problemet er at siden kalder en applikation der enten befinder sig i C:\Programmer\XXX eller C:\Program Files\XXX vha. en hta.

Koden ser ud som følger:

    function runApp (voucher) {       

        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
          xmlDoc.async="false";
          xmlDoc.onreadystatechange=verify;
          xmlDoc.load("xml\\config.xml");
       
        if (navigator.systemLanguage == "da") {
            var ExecuteFileName = xmlDoc.getElementsByTagName("ExecuteFileNameDK")[0].childNodes[0].nodeValue;
        }
        else {
            var ExecuteFileName = xmlDoc.getElementsByTagName("ExecuteFileNameUK")[0].childNodes[0].nodeValue;
        }
        var ExecuteFileNameParameters = xmlDoc.getElementsByTagName("ExecuteFileNameParameters")[0].childNodes[0].nodeValue;
        //var urlargs = 'bilagskode='+voucher+'&app='+ExecuteFileName+'&p='+ExecuteFileNameParameters;
        var urlargs = 'app='+ExecuteFileName+'&p='+ExecuteFileNameParameters+''+voucher;
        location.href='Viewer.hta?'+ urlargs;

    }
Avatar billede rasmuslh Nybegynder
26. marts 2008 - 20:48 #3
Det er en løsning der skal bruges af en masse forskellige folk der både kan have dansk eller engelsk OS. Det har ikke noget at gøre med deres geografi. Jeg skal alene bruge det til at identificere om stien hedder C:\Programmer\XXX eller C:\Program Files\XXX
Avatar billede olebole Juniormester
26. marts 2008 - 21:35 #4
Du kan vel tjekke, om mappen eksisterer med filsystem objektet:

var fso = new ActiveXObject("scripting.FileSystemObject");

var bIsEnglish = fso.FolderExists("C:/Program Files/");
var bIsDanish = fso.FolderExists("C:/Programmer/");

alert("Engelsk: " + bIsEnglish);
alert("Dansk: " + bIsDanish);
Avatar billede rasmuslh Nybegynder
26. marts 2008 - 21:39 #5
Ahhh - det kunne man selvfølgelig. Den løsning er ganske vist lidt "dirty", men jeg tror jeg prøver det.

Smider du et svar?
Avatar billede mstorgaard Praktikant
26. marts 2008 - 21:47 #6
Nogle brugere med et dansk Windows har stadig mappen Program Files på grund af et program måske har installeret det i den folder i stedet for Programmer, så der kan opstå fejl, hvis man først tjekker om Program Files finder og derefter om Programmer findes, så jeg vil anbefale, at man tjekker om Programmer findes, og hvis den ikke findes, så først der tjekker man om Program Files findes.
Avatar billede olebole Juniormester
26. marts 2008 - 22:10 #7
mstorgaard >> Helt sikkert!  ;o)
Avatar billede olebole Juniormester
26. marts 2008 - 22:10 #8
- og et svar  =)
Avatar billede rasmuslh Nybegynder
26. marts 2008 - 22:13 #9
Tak for hjælpen og jeg havde faktisk de overvejelser. Jeg får dog en serverfejl når jeg forsøger at lave det på denne måde:

Automation Server cant create object. jeg har et andet activeX objekt kørt i samme script  så det giver ikke mening hvis det er browseren.

Her er koden:

    function runApp (voucher) {       

        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
          xmlDoc.async="false";
          xmlDoc.onreadystatechange=verify;
          xmlDoc.load("xml\\config.xml");
                   
                var fso = new ActiveXObject("Scripting.FileSystemObject");
                var bIsDanish = fso.FolderExists("C:\\Programmer");


        // mappen Programmer findes
        if (bIsDanish) {
            var ExecuteFileName = xmlDoc.getElementsByTagName("ExecuteFileNameDK")[0].childNodes[0].nodeValue;
        }
        else {
            var ExecuteFileName = xmlDoc.getElementsByTagName("ExecuteFileNameUK")[0].childNodes[0].nodeValue;
        }
        var ExecuteFileNameParameters = xmlDoc.getElementsByTagName("ExecuteFileNameParameters")[0].childNodes[0].nodeValue;
        //var urlargs = 'bilagskode='+voucher+'&app='+ExecuteFileName+'&p='+ExecuteFileNameParameters;
        var urlargs = 'app='+ExecuteFileName+'&p='+ExecuteFileNameParameters+''+voucher;
        location.href='Viewer.hta?'+ urlargs;

    }
Avatar billede rasmuslh Nybegynder
26. marts 2008 - 22:14 #10
Stavebøf - jeg får en script-fejl.
Avatar billede mstorgaard Praktikant
26. marts 2008 - 22:22 #11
En korrekt-erklæring fra Olebole - det er sjældent set ;)
Avatar billede olebole Juniormester
26. marts 2008 - 22:34 #12
mstorgaard >> det passer ikke!  ;D

rasmuslh >> Jeg får ikke fejlen. Hvad kan du oplyse om browser og OS?
Avatar billede olebole Juniormester
26. marts 2008 - 22:35 #13
- derudover er der stor forskel på ActiveXObjekter og deres farlighed - og dermed også hvilke objekter, der tillades
Avatar billede rasmuslh Nybegynder
27. marts 2008 - 08:43 #14
Jeg tester det på den Windows 2003 Server og IE 7 der skal hoste løsningen. jeg har tilføjet sitet til trusted sites og sikret mig at ActiveX er tilladt!
Avatar billede rasmuslh Nybegynder
27. marts 2008 - 10:38 #15
Hmmhhh - jeg har løst det på en alternativ mmåde. Jeg bruger Windows Environmental %Programfiles% til at prefix stien til mit programkald.
Avatar billede olebole Juniormester
27. marts 2008 - 22:00 #16
- undskyld, men sagde du ikke, der var tale om en HTA? Hvordan præcist prøver du at afvikle den?
Avatar billede rasmuslh Nybegynder
27. marts 2008 - 22:14 #17
aspx laver en location.href til den. HTA åbner en applikation hos brugeren.
Avatar billede rasmuslh Nybegynder
27. marts 2008 - 22:14 #18
og det er alle tiders du spørger. Det er ikke noget jeg selv har bygget, men en dejlig "ting" jeg ahr få overdraget. :D
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