2009-08-04 40 views
3

當點擊該IFrame中的鏈接時,我使用IFrame查看PDF文檔。但是,在沒有閱讀器的機器上,鏈接將提示下載。有沒有辦法,相同的鏈接可以提示用戶在沒有檢測到閱讀器時下載閱讀器?我以爲我在某個地方見過這個。謝謝!在MsIE中檢測PDF閱讀器

+2

您*可能*也必須考慮到許多用戶(包括我自己)禁用瀏覽器與其PDF閱讀器集成的事實。 – Bryan 2009-08-12 06:35:15

+1

在MsIE 7中,如何選擇禁用瀏覽器與PDF閱讀器的集成? – 2009-08-12 07:13:20

+3

+1用於禁用惱人的瀏覽器內pdf閱讀器! – 2009-08-12 09:57:53

回答

5

這對我的作品在IE:

<script> 
var p; 
try { 
p = new ActiveXObject('AcroExch.Document'); 
} 
catch (e) { 
// active x object could not be created 
document.write('doesnt look like the PDF plugin is installed...'); 
} 
if (p) { 
    document.write('does look like the pdf plugin is installed!'); 
} 
</script> 

Found it here. ..但修改刪除的是「endif」

1

在JavaScript中,你可以這樣做:

var adobePdfObject = new ActiveXObject("theAdobePdfCOMObject"); 

,然後要麼趕着失敗錯誤或adobePdfObject的返回值?

3

我知道這個問題已經已經回答了,但我最近不得不建立一個功能可以在不同瀏覽器中檢測PDF插件的存在。這就是我得到的。希望如果有所幫助。

function hasPdfPlugin() { 
//detect in mimeTypes array 
if (navigator.mimeTypes != null && navigator.mimeTypes.length > 0) {   
    for (i = 0; i < navigator.mimeTypes.length; i++) { 
     var mtype = navigator.mimeTypes[i]; 
     if(mtype.type == "application/pdf" && mtype.enabledPlugin) 
      return true; 
    } 
} 

//detect in plugins array 
if (navigator.plugins != null && navigator.plugins.length > 0) { 
    for (i = 0; i < navigator.plugins.length; i++) { 
     var plugin = navigator.plugins[i]; 
     if (plugin.name.indexOf("Adobe Acrobat") > -1 
       || plugin.name.indexOf("Adobe Reader") > -1) { 
      return true; 
     } 

    } 
} 
// detect IE plugin 
if (window.ActiveXObject) { 
    // check for presence of newer object  
    try { 
     var oAcro7 = new ActiveXObject('AcroPDF.PDF.1'); 
     if (oAcro7) { 
      return true; 
     } 
    } catch (e) { 
    } 

    // iterate through version and attempt to create object 
    for (x = 1; x < 10; x++) { 
     try { 
      var oAcro = eval("new ActiveXObject('PDF.PdfCtrl." + x + "');"); 
      if (oAcro) { 
       return true; 
      } 
     } catch (e) { 
     } 
    } 

    // check if you can create a generic acrobat document 
    try { 
     var p = new ActiveXObject('AcroExch.Document'); 
     if (p) { 
      return true; 
     } 
    } catch (e) { 
    } 

} 

// Can't detect in all other cases 
return false; 
}