如何将 CSS 注入 webkit?
How to inject CSS into webkit?
在 Linux 我正在创建一个需要显示特定 URL 的 webkit window。
我正在这样做:
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喜欢
WebKitDOM文档 *dom = webkit_web_view_get_dom_document(webView);
但是从这里我看不到如何注入 CSS。
不清楚您使用的是哪个 Webkit GTK 版本,但是两个版本的概念基本相同。对于 webkit 版本 2,它稍微复杂一些,因为 DOM 操作是在扩展端完成的。
您需要到达所需的元素 - 通过 ID e.webkit-dom-document-get-element-by-id or by name. This will return you instance of WebElement。如果您使用名称调用,请注意可能有多个同名元素
从这里您可以通过设置适当的样式属性 webkit_dom_element_set_attribute 或可以处理样式和 css 规则的其他变体来设置样式。
或者您可以选择简单的选项,只需执行 javascript 即可通过调用 webkit_web_view_run_javascript
执行相同的操作
听起来 webkit_web_view_run_javascript()
答案对您的具体问题是一个很好的解决方案,因为您只需要隐藏一个复选框。
回答如何注入任意的一般问题CSS:如果你使用的是最新版本的WebKitGTK+,创建一个WebKitUserContentManager,调用webkit_user_content_manager_add_stylesheet()
,然后通过WebKitUserContentManager
在创建 WebKitWebView
时,使用 webkit_web_view_new_with_user_content_manager()
或如果需要设置多个 construct-only 属性,则手动使用 g_object_new()
。
不相关警告:webkit_web_view_get_dom_document()
已在 WebKitGTK+ 2.6 中删除。 (现在 DOM API 只能通过网络进程扩展访问。)You are using an old, insecure version of WebKitGTK+!
在 Linux 我正在创建一个需要显示特定 URL 的 webkit window。 我正在这样做:
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喜欢
WebKitDOM文档 *dom = webkit_web_view_get_dom_document(webView);
但是从这里我看不到如何注入 CSS。
不清楚您使用的是哪个 Webkit GTK 版本,但是两个版本的概念基本相同。对于 webkit 版本 2,它稍微复杂一些,因为 DOM 操作是在扩展端完成的。
您需要到达所需的元素 - 通过 ID e.webkit-dom-document-get-element-by-id or by name. This will return you instance of WebElement。如果您使用名称调用,请注意可能有多个同名元素
从这里您可以通过设置适当的样式属性 webkit_dom_element_set_attribute 或可以处理样式和 css 规则的其他变体来设置样式。
或者您可以选择简单的选项,只需执行 javascript 即可通过调用 webkit_web_view_run_javascript
执行相同的操作听起来 webkit_web_view_run_javascript()
答案对您的具体问题是一个很好的解决方案,因为您只需要隐藏一个复选框。
回答如何注入任意的一般问题CSS:如果你使用的是最新版本的WebKitGTK+,创建一个WebKitUserContentManager,调用webkit_user_content_manager_add_stylesheet()
,然后通过WebKitUserContentManager
在创建 WebKitWebView
时,使用 webkit_web_view_new_with_user_content_manager()
或如果需要设置多个 construct-only 属性,则手动使用 g_object_new()
。
不相关警告:webkit_web_view_get_dom_document()
已在 WebKitGTK+ 2.6 中删除。 (现在 DOM API 只能通过网络进程扩展访问。)You are using an old, insecure version of WebKitGTK+!