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



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



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



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



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

587   5  

5 ответов:

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

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
    };
};

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

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

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

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

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

Comments

    Ничего не найдено.