Есть ли способ включить инструменты разработчика IE8 из элемента управления WebBrowser в приложении .NET - PullRequest
20 голосов
/ 16 декабря 2009

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

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

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

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

Ответы [ 5 ]

12 голосов
/ 13 марта 2011

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

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
    };
};
3 голосов
/ 31 декабря 2009

У встроенных хостов нет возможности использовать встроенные инструменты разработчика. Но если вы хотите отлаживать, вы все равно можете это сделать, вы можете прикрепить Visual Studio / Windbg к своему приложению, в худшем случае вы можете вставить точки останова с ключевым словом «отладчик». В VS вам может потребоваться выбрать скрипт из меню «выбрать ...» в разделе «отладка этих типов кода».

3 голосов
/ 17 декабря 2009

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

1 голос
/ 29 июля 2014

Один из вариантов - открыть дочернее окно со встроенной страницы, дочернее окно открывается в 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();
            }
        };
0 голосов
/ 11 июня 2018

Не идеальное решение, но вы можете использовать Visual Studio для подключения и отладки приложения в режиме Script. Вы не должны отлаживать приложение и / или запускать другой экземпляр Visual Studio:

  • DEBUG > Attach To Process ...
  • Attach to должно быть Script и выберите запущенный экземпляр приложения
  • И наконец Attach
...