在此处创建一个窗口并生成一个网页:
int main(int argc, char* argv[])
{
WebKitWebView *webView;
GtkWidget *main_window;
gtk_init(&argc, &argv);
if (!g_thread_supported())
g_thread_init(NULL);
#ifndef GTK_API_VERSION_2
disablePlugin("Shockwave Flash");
#endif
main_window = createWindow(&webView);
gchar *uri =(gchar*)(argc > 1 ? argv[1] : "http://www.google.com/");
gchar *fileURL = filenameToURL(uri);
webkit_web_view_load_uri(webView, fileURL ? fileURL : uri);
g_free(fileURL);
gtk_widget_grab_focus(GTK_WIDGET(webView));
gtk_widget_show_all(main_window);
gtk_main();
return 0;
}
这是通知说正在加载页面的地方:
void FrameLoaderClient::postProgressFinishedNotification()
{
WebKitWebView* webView = getViewFromFrame(m_frame);
WebKitWebViewPrivate* privateData = webView->priv;
if (!privateData->disposing)
g_signal_emit_by_name(webView, "load-finished", m_frame);
}
现在加载页面后,我想获得可聚焦节点列表,例如超链接,复选框。
我该怎么做?
答案 0 :(得分:1)
您要了解的是如何从WebKit访问DOM。 WebKit有一个webkit_web_view_get_dom_document()
(http://webkitgtk.org/reference/webkitgtk/stable/webkitgtk-webkitwebview.html#webkit-web-view-get-dom-document),它返回WebKitDOMDocument
(https://live.gnome.org/WebKitGtk/ProgrammingGuide/Reference)的实例。这将使您可以直接访问DOM,并使用webkit_dom_document_get_elements_by_tag_name()
等方法来查询DOM。你可以这样做:
WebKitDomDocument *dom = webkit_web_view_get_dom_document(webview);
WebKitDOMNodeList *elements = webkit_dom_document_get_elements_by_tag_name(dom, "a");
int i = 0;
WebKitDOMElement *anchor = NULL;
for (; i < webkit_dom_node_list_get_length(elements); i++) {
anchor = (WebKitDOMElement *)webkit_dom_node_list_item(elements, i);
}
这不是完美的代码,但你应该从中得到这个想法。如果您想在这里查看一些有点全面的示例:http://www.opensource.apple.com/source/WebKit/WebKit-7533.16/gtk/tests/testdomdocument.c。希望有所帮助。