Skulle vilja kolla om acrobat reader finns installerat hos klienten.
Någon som vet hur man gör?
Mvh
Martin
13 svar · 627 visningar · startad av Martin.asp
Skulle vilja kolla om acrobat reader finns installerat hos klienten.
Någon som vet hur man gör?
Mvh
Martin
<script language="javascript">
function test()
{
var ua=navigator.userAgent.toLowerCase();
var msie = ua.indexOf("msie") != -1;
var mswin = ua.toLowerCase().indexOf("win")!=-1;
var ns = navigator.appName.toLowerCase().indexOf("netscape") != -1;
var mac = ua.indexOf("mac")!=-1;
if(ns||!mswin)
{for(i = 0 ; i<navigator.mimeTypes.length; i++)
{if(navigator.mimeTypes[i].type == "application/pdf"){return true;}}}
if (msie && mswin)
{
/**
* eftersom felhanteringen i JScript v.3 (msie4) är
* kass så använder vi vbscript här...
*/
inst = false; document.writeln('<s'+'cript language=vbscript>\n ON ERROR RESUME NEXT \n inst = IsObject(CreateObject("PDF.PdfCtrl.5"))</scr'+'ipt>\n'); return inst;
}return false;}
if(test()) alert("=)"); else alert("=(");
</script>
Verkar ju fungera kanon! En fråga dock... "PDF.PdfCtrl.5" har det ngt med att den bara kollar om man har version 5 eller räcker det med att man ha 4 installerat?? Om man vill kolla andra program hur gör man då? Finns det ngt generellt sätt hur man skall tänka för att lista ut hur man kollar samtliga program?
Tackar så mycket!
=)
/Martin
"PDF.PdfCtrl.5" har det ngt med att den bara kollar om man har version 5 eller räcker det med att man ha 4 installerat??
PDF.PdfCtrl.5 representerar endast version 5. Vill du testa för version 4 får du använda PDF.PdfCtrl.1.
Finns det ngt generellt sätt hur man skall tänka för att lista ut hur man kollar samtliga program?
Nja, möjligtvis skulle du kunna ta dig en titt i registret under HKEY_CLASSES_ROOT, leta fram filändelsen för det program du vill testa och läsa av datat för "(Standard)". Inga garantier dock ;)
:)
tack!
=)
Får inte helt rätt på det... ingen höjdare på JavaScript.
Skall plocka in inStr från QueryStringen som är ett filnamn (t ex test.pdf). Om acrobat 5 eller 4 finns installeras öppnas denna filen annars blir man vidareskickad till test.htm.
Tack på förhand!
/Martin
On Error Resume Next
If IsObject(CreateObject("PDF.PdfCtrl.5")) OR IsObject(CreateObject("PDF.PdfCtrl.1")) Then
Response.Redirect(Request.QueryString("file"))
Else
Response.Redirect("test.html")
End If
:)
hmm... syntaxen känns lite bekantare =) men jag får inte rätt på det hela:
Microsoft VBScript runtime error '800a01ad'
ActiveX component can't create object: 'PDF.PdfCtrl.5'
/activecare/testAcrobat.asp, line 4
tog bort ON ERROR...
fungerar detta både på mac och pc respektive IE och NS som javascriptet i början gjorde?
VBScript fungerar bara i Internet Explorer, jag vet dock inte hur det är med IE på Mac, men jag utgår ifrån att det fungerar.
Mvh
Jag har för mig att VBScript inte fungerar i Internet Explorer på Mac. I version 5.x skall dock JavaScript-koden fungera.
:)
ok tackar för all hjälp men jag har fortfarande inte knåpat ihop en lösning på det hela.
RGB:s första svar fast hjälp med följande:
- inplockning av filnamn (via request.querystring el motsvarande, t ex test.pdf som skall öppnas om allt är ok)
- kolla om antigen Acrobat Reader 4 eller 5 finns installerat
;)
Bytut
'<s'+'cript language=vbscript>\n ON ERROR RESUME NEXT \n inst = IsObject(CreateObject("PDF.PdfCtrl.5"))</scr'+'ipt>\n'
Mot
'<s'+'cript language=vbscript>\n '+
' ON ERROR RESUME NEXT \n '+
' If IsObject(CreateObject("PDF.PdfCtrl.1")) Then inst = true \n'+
' If IsObject(CreateObject("PDF.PdfCtrl.5")) Then inst = true \n'+
'</scr'+'ipt>\n'
Sen så lägger du till en funktion som plockar ut det du vill ur söksträngen tex
/**
* Används för att plocka ut en del av en fråga.
* för att plocka ut värdet för xxx ur ?www=80&xxx=90
* använder du parseqs("xxx")
*/
function parseqs(lookup)
{
var qa = location.search.split("&");
for(i = 0; i < qa.length; i++)
{
if(qa[i].substring(0,1)=="?")
{qa[i] = qa[i].substr(1, qa[i].length-1);}
if(qa[i].toLowerCase().indexOf((lookup+"=")) == 0)
{return qa[i].split("=")[1];}
}
return "";
}
Sedan så är det väl bara att hålla tummarna och testa...
if(test() && parseqs("pdfdoc") != "") location = parseqs("pdfdoc");
VBScript fungerar bara i Internet Explorer
Har för mig att webbläsaren i KDE klarar av både ActiveX och VBScript...