【问题标题】:How to inject CSS into webkit?如何将 CSS 注入 webkit?
【发布时间】:2015-11-15 23:07:33
【问题描述】:

在 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。

【问题讨论】:

    标签: webkit webkitgtk


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      尚不清楚您使用的是哪个 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

      【讨论】:

      • 感谢 javascript 提示。我正在使用它。
      猜你喜欢
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      相关资源
      最近更新 更多