2016-02-23 3 views
2

Я использую Awesomium library для интерфейса моего приложения на C++ («простой» C++, нет .NET, предварительно скомпилированные заголовки и т. Д.).Console.log() не выводит на удаленный отладчик для Awesomium в C++

Все работает нормально, я могу отправлять события из приложения C++ в JavaScript в Awesomium и наоборот. Пользовательский интерфейс реагирует на клики и т. Д. Благодаря webCore->Update().

Проблема в том, что иногда возникают ошибки в JavaScript. И я хотел бы видеть их, например, в Edge/Chrome/Firefox (где вы можете нажать F12, чтобы увидеть консоль, отладчик и т. Д.).

Я знаю, что можно использовать удаленный отладчик для Awesomium с соответствующим WebConfig поэтому я попытался:

Awesomium::WebConfig webConfig; 
webConfig.remote_debugging_host = Awesomium::WSLit("127.0.0.1"); 
webConfig.remote_debugging_port = 9222; 
//create the WebCore singleton with configuration 
webCore = Awesomium::WebCore::Initialize(webConfig); 

//create a new WebView instance with a certain width and height 
view = webCore->CreateWebView(width, height, 0, Awesomium::kWebViewType_Window); 
view->set_parent_window(*windowHandle->getHWND()); 

view->set_view_listener(this); 

//create a global js object named 'app' 
Awesomium::JSValue result = view->CreateGlobalJavascriptObject(Awesomium::WSLit("app")); 

//bind our method dispatcher to the WebView 
view->set_js_method_handler(this); 

if (result.IsObject()) { 
    //bind our custom method to it 
    Awesomium::JSObject& appObject = result.ToObject(); 
    appObject.SetCustomMethod(Awesomium::WSLit("sendEvent"), false); 
} 

Сейчас в Chrome на http://localhost:9222/# я вижу свою сессию: enter image description here

Я могу например, выберите элементы пользовательского интерфейса внутри моего приложения на C++ с помощью отладчика. Но я ничего не вижу на вкладке консоли моего отладчика в Chrome (я использую console.log("Hello!") внутри веб-сайта, который загружается в Awesomium): enter image description here

P.S. Окно отладчика не является высотой 100% (как вы видите на экране). Могу ли я это исправить?

п.с.2. Google Chrome не является моим браузером. Могу ли я использовать еще один для отладки интерфейса Awesomium?

ответ

2

Сообщения об ошибках/отладки JavaScript не отображаются в удаленном отладчике Awesomium (v1.7.5.1). Единственный способ, который я нашел, это прослушивание метода OnAddConsoleMessage() в классе WebViewListener::Load. Вы должны создать свой собственный подкласс и зарегистрировать его в своем веб-обзоре.

#include <Awesomium/WebViewListener.h> 
    class MyViewListender : public WebViewListener::View { 

      // ... All the overridden WebViewListener::View methods go here 

      void OnAddConsoleMessage(Awesomium::WebView* caller, 
            const Awesomium::WebString& message, 
            int line_number, 
            const Awesomium::WebString& source) 
      { 
        cout << "Console: " << message << endl; 
      } 
    }; 

Зарегистрируйте:

MyViewListender* my_view_listener = new MyViewListender(); 
    view->set_view_listener(my_view_listener);