У меня есть расширение для браузера Internet Explorer, которое работает как Browser Helper Object (BHO). Я создал функцию-утилиту на C++, которая добавляется к объекту window страницы. Это позволяет другим скриптам на странице использовать её для динамической загрузки локальных JavaScript файлов.
Основная проблема в том, что для корректного разрешения относительных путей к локальным скриптам мне нужно определить путь к JavaScript файлу, который вызывает мою функцию.
Вот структура вызовов:
myUtility()- написана на C++ и доступна в JavaScript страницы- file:///путь/к/некоторому/script.js
- (дополнительные фреймы стека)
Мне нужно из верхнего фрейма получить информацию о том, что скрипт, вызывающий myUtility(), находится по адресу file:///путь/к/некоторому/script.js.
Сначала я думал использовать интерфейс IActiveScriptDebug для получения трассировки стека из моей утилиты. Однако оказалось невозможным получить интерфейс IActiveScript из IWebBrowser2 или связанного документа.
Единственный вариант, который приходит в голову - зарегистрировать собственную реализацию отладчика скриптов и заставить myUtility() войти в режим отладки. Но я сомневаюсь, что это сработает без запроса разрешения у пользователя на вход в отладчик.
Есть ли у кого-нибудь точная информация о том, будет ли такой подход работать? Или может посоветуете альтернативный способ, который позволит функции на C++ получить трассировку стека от движка скриптов, который её вызвал?