如何将CSS注入webkit?

时间:2015-11-15 23:07:34

标签: webkit webkitgtk

在Linux上我正在创建一个需要显示某个URL的webkit窗口。 我是这样做的:

GtkWidget *main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

// Create a browser instance
WebKitWebView *webView = WEBKIT_WEB_VIEW(webkit_web_view_new());

// Put the browser area into the main window
gtk_container_add(GTK_CONTAINER(main_window), GTK_WIDGET(webView));

// Load a web page into the browser instance
webkit_web_view_load_uri(webView, "http://example.com");

// Make sure that when the browser area becomes visible, it will get mouse
// and keyboard events
gtk_widget_grab_focus(GTK_WIDGET(webView));

// Show the result
gtk_window_set_default_size(GTK_WINDOW(main_window), 800, 600);
gtk_widget_show_all(main_window);

但是,我需要在其中注入一些CSS来隐藏某个复选框。 如何将CSS注入DOM。

我看到我可以得到像

这样的dom

WebKitDOMDocument * dom = webkit_web_view_get_dom_document(webView);

但是从这里我看不出如何注入CSS。

2 个答案:

答案 0 :(得分:3)

听起来webkit_web_view_run_javascript()答案可以很好地解决您的具体问题,因为您只需要隐藏一个复选框。

回答如何注入任意CSS的一般问题:如果您使用的是最新版本的WebKitGTK +,请创建WebKitUserContentManager,调用webkit_user_content_manager_add_stylesheet(),然后传递WebKitUserContentManager在创建WebKitWebView时,使用webkit_web_view_new_with_user_content_manager()或手动使用g_object_new(),如果您需要设置多个仅限构造的属性。

无关警告:在WebKitGTK + 2.6中删除了webkit_web_view_get_dom_document()。 (现在只能通过Web流程扩展访问DOM API。)You are using an old, insecure version of WebKitGTK+!

答案 1 :(得分:1)

目前尚不清楚您正在使用哪个Webkit GTK版本,但两个版本的概念基本相同。对于webkit版本2,它稍微复杂一点,因为DOM操作是在扩展端完成的。

您需要通过ID e。webkit-dom-document-get-element-by-id或按名称访问所需元素。这将返回WebElement的实例。如果您通过名称调用使用,请注意可能有多个具有相同名称的元素

从这里,您可以通过设置适当的样式属性webkit_dom_element_set_attribute或其他可以处理样式和css规则的变体来设置样式。

或者您可以选择简单的选项并通过调用webkit_web_view_run_javascript

执行执行相同操作的javascript
相关问题