я использую Библиотека Awesomium для пользовательского интерфейса моего приложения C ++ («простой» C ++, нет .NET, предварительно скомпилированные заголовки и т. д.).
Все отлично работает, я могу отправлять события из приложения 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/#
Я вижу свою сессию:
Я могу, например, выбрать элементы пользовательского интерфейса внутри моего приложения C ++ с помощью отладчика.
Но я не вижу ничего на вкладке консоли моего отладчика в Chrome (Я использую console.log("Hello!")
внутри сайта, который загружается в Awesomium):
постскриптум Окно отладчика не на 100% высотой (как вы видите на экране). Можно как-нибудь это исправить?
p.s.2. Google Chrome не мой браузер выбора. Могу ли я использовать другой для отладки Awesomium UI?
Сообщения об ошибках 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);
Других решений пока нет …