Подтвердить что ты не робот

Есть ли способ включить IE8 Developer Tools изнутри элемента управления WebBrowser в приложении .NET

Если у вас есть IE8, возможно, вы заметили действительно удобную функцию, добавленную MS. Появляются файлы Hit F12 и Developer Tools, такие как отладчик, похожий на firebug. Это очень полезно для целей отладки, и мне интересно, есть ли способ открыть Инструменты разработчика из элемента управления WebBrowser внутри. NET.

Моя ситуация такова: у меня есть приложение С# с встроенным элементом управления WebBrowser. Приложение С# и содержимое веб-браузера DHTML обмениваются данными друг с другом, используя интерфейсы ObjectForScripting (С# side) и window.external(DHTML), поэтому для тестирования/отладки/устранения неполадок полной функциональности мне нужен способ запуска разработчика Инструменты изнутри элемента управления WebBrowser. До сих пор мы ограничивались использованием Firebug Lite, который сильно ограничен или запускает этап отладки javascript с использованием "отладчика"; js, но теперь мы добираемся до такой степени, что эти опции становятся настоящей проблемой и не позволяют использовать все возможности, которые мы могли бы получить от того, что у нас есть что-то вроде Firebug или инструментов разработчика.

Мне бы очень хотелось, чтобы вы могли открывать инструменты разработчика внутри моего элемента управления WebBrowser во время работы приложения, но я еще не нашел способ выполнить это.

Кто-нибудь еще столкнулся с этой проблемой и выяснил, есть ли способ сделать это?

4b9b3361

Ответ 1

Нет, как говорили другие, это невозможно. Однако есть способ, с помощью которого можно связать большую часть ошибок окна с пользовательским обработчиком. Как только документ завершит загрузку, вы можете подключить к окну слушателя. например.

webBrowser.DocumentCompleted += (o, e) =>
{
    webBrowser.Document.Window.Error += (w, we) =>
    {
        we.Handled = true;

        // Do something with the error...
        Debug.WriteLine(
            string.Format(
               "Error: {1}\nline: {0}\nurl: {2}",
               we.LineNumber, //#0
               we.Description, //#1
               we.Url));  //#2
    };
};

Ответ 2

Я считаю, что инструменты разработчика реализованы на хосте IE (iexplore.exe), а не в самом MSHTML. Очевидно, что для этого есть крючки, но я не думаю, что вы можете добраться до пользовательского интерфейса и от элемента управления.

Ответ 3

У встроенных хостов нет возможности использовать встроенные инструменты для разработчиков. Но если вы хотите отлаживать, вы все равно сможете, вы можете прикрепить визуальную студию /windbg к вашему приложению, тем более, что вы можете вставить точки останова с ключевым словом "отладчик". В VS вам может потребоваться выбрать script из меню "select..." в разделе "Отладка этих типов кода".

Ответ 4

Один из вариантов заключается в том, чтобы открыть дочернее окно со встроенной страницы, дочернее окно открывается в IE и работает с инструментами разработчика, затем вы можете сделать

window.opener

в консоли, чтобы ссылаться на родителя и манипулировать страницей.

Или замените родительскую консоль на дочерний элемент и перенаправьте его.

 var logWindow = window.open();
        logWindow.document.write('<html><head><title>Child Log Window</title></head>\x3Cscript>window.opener.console = console;\x3C/script><body><h1>Child Log Window</h1></body></html>');
        window.onunload = function () {
            if (logWindow && !logWindow.closed) {
                logWindow.close();
            }
        };