Есть ли способ включить 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 во время работы приложения, но я еще не нашел способ выполнить это.
Кто-нибудь еще столкнулся с этой проблемой и выяснил, есть ли способ сделать это?
Ответы
Ответ 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();
}
};