Привет всем! У меня возникла проблема при работе с BHO (Browser Helper Object) в Internet Explorer 9. Я пытаюсь вызвать метод объекта BHO из JavaScript-функции, которая внедряется самим BHO с помощью IHTMLWindow2 execScript.
Вот пример кода:
function выполнитьДействие() {
ПомощникБраузера.СделатьЧтоТо();
}
Объект ПомощникБраузера - это BHO, который уже загружен в IE9. Метод СделатьЧтоТо объявлен в IDL-файле проекта BHO.
Такой подход отлично работает в IE7 и IE8, но в IE9 постоянно возникает ошибка. Похоже, что JavaScript не может найти объект ПомощникБраузера в своем пространстве имен.
Интересно, что если использовать режим совместимости с IE7/IE8 внутри IE9, все работает нормально. Проблема возникает только в стандартном режиме IE9.
Может, это баг в IE9? Или есть какой-то новый способ доступа к методам BHO? Буду благодарен за любую помощь!
В IE9 действительно есть ограничения на взаимодействие с BHO. Можно попробовать использовать window.external или COM-объекты для доступа. Также проверьте настройки безопасности браузера - возможно, блокируется выполнение ActiveX. Еще вариант - внедрять скрипт через document.write() вместо execScript. Но лучше всего постепенно отказываться от BHO в пользу современных расширений, IE уже неактуален.
слушай, я тоже сталкивался с подобной проблемой в IE9. попробуй использовать window.external вместо прямого обращения к объекту BHO. типа так:
function выполнитьДействие() {
window.external.СделатьЧтоТо();
}
это должно сработать даже в стандартном режиме IE9. еще можно поиграться с настройками безопасности зоны интернета, иногда помогает. но честно говоря, лучше уже переходить на более современные технологии расширений для браузеров, IE все равно отмирает.
Возможно, проблема в режиме безопасности IE9. Попробуй добавить домен в доверенные сайты или отключить защищенный режим для тестирования. Еще вариант - использовать window.external для доступа к BHO. А вообще, не пора ли отказаться от IE? Современные браузеры предлагают более безопасные и стандартизированные решения для расширений.