обнаружить Adobe Reader в IE

Я использовал новый объект ActiveXObject (AcroPDF.PDF) для обнаружения любого Adobe Reader версии 7 или выше. Совсем недавно вышло обновление для Adobe Reader. Теперь, когда я пытаюсь запустить этот код. Он просто «умрет». Кто-нибудь еще сталкивается с такой же проблемой? Любые предложения или идеи приветствуются.

Заранее спасибо,

Примечание: IE8. Adobe Reader X. Windows XP.


person Nebby    schedule 24.06.2011    source источник


Ответы (1)


Вы пробовали запускать его через CLSID, а не через progId? CLSID - CA8A9780-280D-11CF-A24D-444553540000, если не ошибаюсь.

А может вы сможете уточнить, что значит «умереть»?


Обновлять

var checkAdobeReaderAvailability = function (displayMessageDelegate) {
            var dynamicObject = document.createElement("object");
            dynamicObject.onreadystatechange = function (x) {
                if (dynamicObject.readyState === 4) {
                    if (displayMessageDelegate !== undefined && typeof displayMessageDelegate === 'function') {
                        displayMessageDelegate();
                    }
                }
            }
            dynamicObject.classid = 'CLSID:CA8A9780-280D-11CF-A24D-444553540000';           

            document.getElementById('host').appendChild(dynamicObject)
        }

        var checkAdobeReaderAvailabilityWithProgId = function (displayMessageDelegate) {
            var ax = new ActiveXObject('AcroPDF.PDF');

            displayMessageDelegate(ax);
        }
        var onload = function () {
            checkAdobeReaderAvailability(function () { alert('Done!'); });
            checkAdobeReaderAvailabilityWithProgId(function () { alert('Done!'); });
        }
person Arthur P    schedule 24.06.2011
comment
Не уверен, что вы имеете в виду под CLSID. Извините за то, что не прояснил это больше. Я использую Javascript для обнаружения Adobe Reader, вызывая новый ActiveXObject ('AcroPDF.PDF'). У меня это работало раньше, но не после последнего обновления Reader. Под словом «умереть» я имею в виду то, что у меня есть функция предупреждения, которая дает мне индикатор ActiveXObject, но теперь предупреждение дает мне значение null вместо объекта. - person Nebby; 25.06.2011
comment
Существует два основных способа создания экземпляров ActiveX вручную - один из них - через progId. ProgId для Adobe PDF X - это AcroPDF.PDF, только что проверил. Но что-то может быть не так с множеством факторов (безопасность, реестр и т. Д.), Поэтому вы можете выбрать другой вариант вызова activex. Создайте элемент OBJECT DOM (скрытый) на странице и установите для атрибута classid значение GUID, которое я отправил. Пожалуйста, дайте мне знать, если вам понадобится фрагмент кода, чтобы попробовать. - person Arthur P; 25.06.2011
comment
Я понимаю. Я не знал, что вы можете проверить с помощью GUID. Может ли руководство отличаться от одного ПК к другому? или из версий IE (скажем, от IE7 до IE8 до IE9). Но хотелось бы получить фрагмент кода. Это будет очень полезно. Спасибо. - person Nebby; 25.06.2011
comment
Хорошо, я разместил код. К сожалению, XP у меня нет, пробовал на Win7. Оба вызова работают нормально. CLSID - это выпущенная версия библиотеки COM, но лучше искать progId, как вы, потому что, если будет обновление, CLSID, скорее всего, изменится (по крайней мере, это то, что мы обычно делали, чтобы гарантировать, что все потребители будут обновлены с новой версией ActiveX. ). Надеюсь, это решит проблему. - person Arthur P; 25.06.2011
comment
Большое Вам спасибо. С IE всегда хорошие времена. - person Nebby; 25.06.2011