这是来自How to debug WebKit2GTK+ extensions的后续问题。尽管这里有更多代码可供参考,但我对其进行了一些更改。
我具有以下Webkit扩展名:
#include <webkit2/webkit-web-extension.h>
#include <iostream>
static void web_page_created_callback(WebKitWebExtension* extension, WebKitWebPage* webPage, gpointer userData)
{
std::cout << "Page " << webkit_web_page_get_id(webPage) << " created for " << webkit_web_page_get_uri(webPage) << "\n";
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);
}
根据https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebExtension.html和https://blogs.igalia.com/carlosgc/2013/09/10/webkit2gtk-web-process-extensions/,每次创建页面时,这应该打印出一条消息。我正在以与Webkit参考文档相同的方式使用扩展的实现,其中它是“ initialize-web-extension”的回调。
我不知道这是否有所不同,但是我的WebKitWebView对象包装在GTKWidget框对象中。这是我得到的输出:
Page 1 created for Page 1 created for (null)
而且即使我打开一个新文件,也再也不会打印出来(我有一个打开文件的文件选择对话框,这就是WebKitWebView打包到GTK_BOX中的原因。)>]
这是WebKit2GTK文档对“页面创建的”处理程序所说的:
空隙user_function(WebKitWebExtension *扩展名,WebKitWebPage * web_page,gpointer user_data)
当在Web Process中创建新的WebKitWebPage时,将发出此信号。参数
扩展名:发出信号的WebKitWebExtension
web_page:创建的WebKitWebPage
user_data:连接信号处理程序时的用户数据集。
标志:最后运行
如果这使创建的WebPage,那么为什么不能用
webkit_web_page_get_uri()
来获取uri?为什么这只给已加载的第一页提供输出(尽管很混乱)?
编辑:我正在使用webkit_web_view_load_uri()加载页面>
这是如何调试WebKit2GTK +扩展的后续问题。尽管有更多代码可供参考,但我对其进行了一些更改。我有以下Webkit扩展:#include&...
我刚刚接触过WebKitGtk的表面,我并不了解。但是据我了解,WebKitWebPage(名称具有误导性)只是反映了WebKitWebView小部件的实例,而不是您当前正在查看的网站。
[每次应用程序创建一个新的WebKitWebView小部件,通过“ page-created”信号通知扩展,并将WebKitWebPage对象传递给该新小部件。
您是否正在使用webkit_web_view_load_uri更改网页?