.NET 애플리케이션의 내부 웹 브라우저 컨트롤에서 IE8 개발자 도구를 활성화하는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/1917314

문제

IE8이 있다면 MS가 추가 한 정말 편리한 기능을 발견했을 수 있습니다. 디버거와 같은 소방차 인 F12와 개발자 도구가 팝업됩니다. 이것은 디버깅 목적으로 매우 유용하며 팝업 할 수있는 방법이 있는지 궁금합니다. 개발자 도구 .NET 응용 프로그램 내부의 웹 브라우저 컨트롤에서

내 상황은 이것입니다. 웹 브라우저 컨트롤이 포함 된 C# 응용 프로그램이 있습니다. C# 앱 및 DHTML 웹 브라우저 컨텐츠는 ObjectForscripting (C# Side) 및 Window.External (DHTML 측) 인터페이스를 사용하여 서로 통신하므로 전체 기능을 테스트/디버그/문제 해결하려면 개발자를 트리거하는 방법이 필요합니다. Webbrowser 컨트롤 내의 도구. 지금까지 우리는 사용으로 제한되었습니다 소방대 라이트 '디버거'를 사용하여 JavaScript의 단계 디버그 세션을 심하게 제한하거나 트리거합니다. JS, 그러나 이제 우리는 이러한 옵션이 실제로 번거롭고 Firebug 또는 Developer 도구와 같은 기능을 수행 할 수없는 전체 기능을 허용하지 않는 시점에 도달하고 있습니다.

내가 정말로하고 싶은 것은 앱이 실행중인 동안 웹 브라우저 컨트롤 내부에서 개발자 도구를 팝업 할 수 있다는 것입니다. 그러나 아직이를 달성 할 방법을 찾지 못했습니다.

다른 사람 이이 문제에 도달했고 그것을 할 수있는 방법이 있는지 알아 냈습니까?

도움이 되었습니까?

해결책

아니요, 다른 사람들이 말했듯이 이것이 불가능하다고 말했습니다. 그러나 대부분의 윈도우 오류를 사용자 정의 핸들러로 연결할 수있는 방법이 있습니다. 문서가로드가 완료되면 청취자를 창에 첨부 할 수 있습니다. 예를 들어

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

다른 팁

개발자 도구는 MSHTML 자체가 아닌 IE 호스트 (IExplore.exe)에서 구현된다고 생각합니다. 분명히 후크가 있습니다. 그러나 나는 당신이 UI에 도착할 수 있다고 생각하지 않습니다.

임베디드 호스트가 내장 된 개발자 도구를 사용할 수있는 방법은 없습니다. 그러나 디버그하려면 여전히 가능해야한다면 Visual Studio / WindBG를 앱에 첨부 할 수 있습니다. "Debugger"키워드와 함께 중단 점을 삽입 할 수 있습니다. vs에서는 "이 코드 유형 디버그"아래의 "Select ..."메뉴에서 스크립트를 선택해야 할 수도 있습니다.

한 가지 옵션은 임베디드 페이지에서 자식 창을 여는 것입니다. 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 방법. 응용 프로그램을 디버깅하거나 비주얼 스튜디오의 다른 인스턴스를 시작해서는 안됩니다.

  • DEBUG > Attach To Process ...
  • Attach to 해야합니다 Script 응용 프로그램 실행 인스턴스를 선택하십시오
  • 그리고 마지막으로 Attach
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top