Note that there are some explanatory texts on larger screens.

plurals
  1. POwebkit_dom_element_get_elements_by_tag_name doesn't work properly
    text
    copied!<p>I am trying to print name of nodes from DOM with WebKitGTK with the following code:</p> <pre><code>WebKitDOMDocument *dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webView)); WebKitDOMNodeList* video = webkit_dom_element_get_elements_by_tag_name(dom, "*"); gulong element_count = webkit_dom_node_list_get_length(video); int i = 0; for (i = 0; i &lt; element_count; i++) { WebKitDOMNode *element = webkit_dom_node_list_item(video, i); printf("tag: %s\n",webkit_dom_node_get_node_name (element)); } </code></pre> <p>And I have the following webpage:</p> <pre><code>&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;/head&gt; &lt;body&gt; &lt;video id="video" autoplay preload="none" width="320" height="240"&gt; &lt;source src="./movie.ogg" type="video/ogg"&gt; Your browser does not support the video tag. &lt;/video&gt; &lt;video id="video2" width="320" height="240" autoplay preload="none"&gt; &lt;source src="./movie.ogg" type="video/ogg"&gt; Your browser does not support the video tag. &lt;/video&gt; &lt;input type="hidden" id="prueba" name="finish" value="false"&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <p>And the output of my program is: </p> <pre><code>tag: HTML tag: HEAD tag: BODY </code></pre> <p>I don't understand why it output that, the output should be:</p> <pre><code>tag: HTML tag: HEAD tag: BODY tag: VIDEO tag: SOURCE tag: VIDEO tag: SOURCE tag: INPUT </code></pre> <p>Anyone know what's happend?</p> <p>Thanks</p> <p>Edit: My complete code</p> <pre><code>#include &lt;gtk/gtk.h&gt; #include &lt;webkit/webkit.h&gt; void on_window_destroy (GtkWidget *object, gpointer user_data) { gtk_main_quit(); } int main (int argc, char *argv[]) { GtkBuilder *builder; GtkWidget *window; gtk_init (&amp;argc, &amp;argv); builder = gtk_builder_new (); gtk_builder_add_from_file (builder, "webkit.glade", NULL); window = GTK_WIDGET (gtk_builder_get_object (builder, "window1")); gtk_window_set_decorated(window, 0); gtk_window_set_default_size(GTK_WINDOW(window), 670, 480); gtk_window_move(window,0,0); // create webkit WebKitWebView *webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); WebKitWebView *webView1 = WEBKIT_WEB_VIEW(webkit_web_view_new()); GtkWidget *scrolledWindow = GTK_WIDGET (gtk_builder_get_object (builder, "scrolledwindow1")); GtkWidget *scrolledWindow1 = GTK_WIDGET (gtk_builder_get_object (builder, "scrolledwindow2")); //add webkit to scrolledwindows gtk_container_add(GTK_CONTAINER(scrolledWindow), GTK_WIDGET(webView)); gtk_container_add(GTK_CONTAINER(scrolledWindow1), GTK_WIDGET(webView1)); // load page webkit_web_view_load_uri(webView, "http://localhost/"); webkit_web_view_load_uri(webView1, "http://localhost/"); // set focus. gtk_widget_grab_focus(GTK_WIDGET(webView1)); // show components gtk_widget_show_all(window); // get DOM WebKitDOMDocument *dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webView)); WebKitDOMNodeList* video = webkit_dom_document_get_elements_by_tag_name(dom, "*"); gulong element_count = webkit_dom_node_list_get_length(video); int i = 0; for (i = 0; i &lt; element_count; i++) { WebKitDOMNode *element = webkit_dom_node_list_item(video, i); printf("Elemento: %s\n",webkit_dom_node_get_node_name (element)); } printf("La longitud es: %d\n", element_count); gtk_main (); gtk_builder_connect_signals (builder, NULL); g_object_unref (G_OBJECT (builder)); return 0; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload