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
Annonceindlæg fra Computerworld
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; }
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
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);
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?
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.
26. marts 2008 - 22:10
#7
mstorgaard >> Helt sikkert! ;o)
26. marts 2008 - 22:10
#8
- og et svar =)
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; }
26. marts 2008 - 22:14
#10
Stavebøf - jeg får en script-fejl.
26. marts 2008 - 22:22
#11
En korrekt-erklæring fra Olebole - det er sjældent set ;)
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?
26. marts 2008 - 22:35
#13
- derudover er der stor forskel på ActiveXObjekter og deres farlighed - og dermed også hvilke objekter, der tillades
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!
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.
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?
27. marts 2008 - 22:14
#17
aspx laver en location.href til den. HTA åbner en applikation hos brugeren.
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
Vi tilbyder markedets bedste kurser inden for webudvikling