gpt4 book ai didi

javascript - Console.log() 不输出到 C++ 中 Awesomium 的远程调试器

转载 作者:搜寻专家 更新时间:2023-10-31 02:17:38 24 4
gpt4 key购买 nike

我正在使用 Awesomium library对于我的 C++ 应用程序的 UI(“纯”C++、无 .NET、预编译头文件等)。

一切正常,我能够将事件从 C++ 应用程序发送到 Awesomium 中的 JavaScript,反之亦然。 UI 响应点击等。感谢 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);
}

现在在 Chrome 中的 http://localhost:9222/# 我看到了我的 session : enter image description here

我能够,例如使用调试器在我的 C++ 应用程序中选择 UI 元素。但我在 Chrome 中的调试器控制台选项卡中看不到任何内容(我确实在加载到 Awesomium 的网站内部使用了 console.log("Hello!")): enter image description here

附注调试器窗口不是 100% 高度(正如您在屏幕上看到的那样)。我能以某种方式修复它吗?

附注 2。谷歌浏览器不是我选择的浏览器。我可以使用另一个来调试 Awesomium UI 吗?

最佳答案

JavaScript 错误/调试消息在 Awesomium (v1.7.5.1) 的远程调试器中不可见。我找到的唯一方法是监听 WebViewListener::Load 类中的 OnAddConsoleMessage() 方法。您必须创建自己的子类并将其注册到您的 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);

关于javascript - Console.log() 不输出到 C++ 中 Awesomium 的远程调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35571490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com