WebKit2GTK +“未清除窗口对象”

问题描述 投票:0回答:1

这是后续行动:How to debug WebKit2GTK+ extensions

这是我的扩展名:

#include <webkit2/webkit-web-extension.h>
#include <iostream>

static void window_object_cleared_callback(WebKitScriptWorld* world, WebKitWebPage* webPage, WebKitFrame* frame, gpointer userData)
{
  std::cout << "Callback reached\n";

  JSCContext *jsCtx = webkit_frame_get_js_context_for_script_world(frame, world);
  JSCValue* title = jsc_context_evaluate(jsCtx, "document.title;", -1);

  std::cout << "Title: " << jsc_value_to_string(title) << "\n";
}

static void web_page_created_callback(WebKitWebExtension* extension, WebKitWebPage* webPage, gpointer UserData)
{
  g_print("Page %lu created for %s\n", webkit_web_page_get_id(webPage), webkit_web_page_get_uri(webPage));
}

extern "C" G_MODULE_EXPORT void webkit_web_extension_initialize(WebKitWebExtension* extension)
{
  g_signal_connect(extension, "page-created", G_CALLBACK(web_page_created_callback), NULL);
  g_signal_connect(webkit_script_world_get_default(), "window-object-cleared", G_CALLBACK(window_object_cleared_callback), NULL);
}

唯一打印到控制台的是“为(空)创建的第1页”。当未创建任何内容时,将为创建的页面调用此回调,是否清除了winow-object一样?

我不知道为什么window_object_cleared对象现在显示出工作的迹象。

这些是我在信号上发现的:https://webkitgtk.org/reference/webkit2gtk/stable/WebKitScriptWorld.html#WebKitScriptWorld-window-object-cleared

c++ gtk webkit javascriptcore webkit2-webextension
1个回答
0
投票

清除了窗口对象的回调是一种注入JavaScript的方式。我认为只有在向WebKitWebView添加至少“某些内容”时才执行它。您应该调用load_uri或类似的函数。

© www.soinside.com 2019 - 2024. All rights reserved.