javascript — Console.log () не выводится на удаленный отладчик для Awesomium в переполнении стека

я использую Библиотека 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?

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);
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector