Обнаружить Pdf Reader в MsIE
-
22-07-2019 - |
Вопрос
Я использую IFrame для просмотра документа PDF, когда щелкают ссылку в этом IFrame. Однако на машинах без ридера ссылка предложит скачать. Есть ли способ, что та же самая ссылка может побудить пользователя загрузить читателя, когда он не обнаруживает читателя вместо этого? Я думал, что видел это где-то. Спасибо!
Решение
Это работает для меня в 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>
нашел его здесь. ... но изменил, чтобы удалить " ; ENDIF & Quot; р>
Другие советы
Я знаю, что на этот вопрос уже был дан ответ, но недавно мне пришлось создать функцию, которая обнаруживает наличие подключаемого модуля 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;
}
Вот несколько сценариев , которые помогают обнаруживать присутствие Acrobat. р>
В JavaScript вы можете сделать что-то вроде:
var adobePdfObject = new ActiveXObject("theAdobePdfCOMObject");
и затем либо перехватывает ошибку, либо возвращает значение adobePdfObject?