我正在使用Awesomium library作为我的C ++应用程序的UI(“普通”C ++,没有.NET,预编译的标题等)。
一切正常,我能够将事件从C ++应用程序发送到Awesomium中的JavaScript,反之亦然。由于webCore->Update()
,用户界面会响应点击次数等。
问题是,有时会出现JavaScript错误。我想看到他们喜欢在例如Edge / Chrome / Firefox(您可以按F12查看控制台,调试器等)。
我知道可以使用适当的WebConfig
对Awesomium使用远程调试器,所以我尝试过:
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);
}
现在在http://localhost:9222/#
的Chrome中,我看到了我的会话:
我能够例如使用调试器在我的C ++应用程序中选择UI元素。
但是我在Chrome的调试器控制台选项卡中看不到任何内容(我在加载到Awesomium的网站中使用console.log("Hello!")
):
P.S。调试器窗口不是100%高度(如屏幕上所示)。我能以某种方式解决它吗?
p.s.2。谷歌浏览器不是我的首选浏览器。我可以使用另一个来调试Awesomium UI吗?
答案 0 :(得分:2)
在Awesomium(v1.7.5.1)的远程调试器中看不到JavaScript错误/调试消息。
我发现的唯一方法是通过听OnAddConsoleMessage()
类中的WebViewListener::Load
方法。
您必须创建自己的子类并将其注册到您的webview。
#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);