diff options
| author | Joakim Verona | 2011-08-12 15:14:29 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-08-12 15:14:29 +0200 |
| commit | 3637e3bf04cc1e54850a877c6535a075caad7e5e (patch) | |
| tree | af49dd7e29e5ab14e8890a96f99a780dbc4f494e /src/xwidget.c | |
| parent | 6a6f5bfa9fe12d08b0ed1ebab05884b9eb1b1454 (diff) | |
| parent | 9d5cb6312b5e6ad61c7cdb5a1282d81e677899f2 (diff) | |
| download | emacs-3637e3bf04cc1e54850a877c6535a075caad7e5e.tar.gz emacs-3637e3bf04cc1e54850a877c6535a075caad7e5e.zip | |
dom traversal example
Diffstat (limited to 'src/xwidget.c')
| -rw-r--r-- | src/xwidget.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/xwidget.c b/src/xwidget.c index 89cd859fdfc..7f78ffed5e7 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -734,7 +734,51 @@ void gtk_window_get_position (GtkWindow *window, | |||
| 734 | *root_y = 0; | 734 | *root_y = 0; |
| 735 | } | 735 | } |
| 736 | 736 | ||
| 737 | DEFUN ("xwidget-webkit-dom-dump", Fxwidget_webkit_dom_dump, Sxwidget_webkit_dom_dump, 1, 1, 0, | ||
| 738 | doc: /* webkit dom dump*/ | ||
| 739 | ) | ||
| 740 | (Lisp_Object xwidget) | ||
| 741 | { | ||
| 742 | struct xwidget* xw = XXWIDGET(xwidget); | ||
| 743 | xwidget_webkit_dom_dump(webkit_web_view_get_dom_document(xw->widget_osr)); | ||
| 744 | return Qnil; | ||
| 745 | } | ||
| 737 | 746 | ||
| 747 | void | ||
| 748 | xwidget_webkit_dom_dump(WebKitDOMNode* parent){ | ||
| 749 | WebKitDOMNodeList* list; | ||
| 750 | int i; | ||
| 751 | int length; | ||
| 752 | WebKitDOMNode* attribute; | ||
| 753 | WebKitDOMNamedNodeMap* attrs; | ||
| 754 | printf("node:%d type:%d name:%s content:%s\n", | ||
| 755 | parent, | ||
| 756 | webkit_dom_node_get_node_type(parent),//1 element 3 text 8 comment 2 attribute | ||
| 757 | webkit_dom_node_get_local_name(parent), | ||
| 758 | webkit_dom_node_get_text_content(parent)); | ||
| 759 | |||
| 760 | if(webkit_dom_node_has_attributes(parent)){ | ||
| 761 | attrs = webkit_dom_node_get_attributes(parent); | ||
| 762 | |||
| 763 | length = webkit_dom_named_node_map_get_length(attrs); | ||
| 764 | for (int i = 0; i < length; i++) { | ||
| 765 | attribute = webkit_dom_named_node_map_item(attrs,i); | ||
| 766 | printf(" attr node:%d type:%d name:%s content:%s\n", | ||
| 767 | attribute, | ||
| 768 | webkit_dom_node_get_node_type(attribute),//1 element 3 text 8 comment | ||
| 769 | webkit_dom_node_get_local_name(attribute), | ||
| 770 | webkit_dom_node_get_text_content(attribute)); | ||
| 771 | } | ||
| 772 | } | ||
| 773 | list = webkit_dom_node_get_child_nodes(parent); | ||
| 774 | length = webkit_dom_node_list_get_length(list); | ||
| 775 | WebKitDOMNode* child; | ||
| 776 | for (int i = 0; i < length; i++) { | ||
| 777 | child = webkit_dom_node_list_item(list, i); | ||
| 778 | //if(webkit_dom_node_has_child_nodes(child)) | ||
| 779 | xwidget_webkit_dom_dump(child); | ||
| 780 | } | ||
| 781 | } | ||
| 738 | 782 | ||
| 739 | 783 | ||
| 740 | #endif | 784 | #endif |
| @@ -912,6 +956,7 @@ syms_of_xwidget (void) | |||
| 912 | defsubr (&Sxwidget_disable_plugin_for_mime); | 956 | defsubr (&Sxwidget_disable_plugin_for_mime); |
| 913 | 957 | ||
| 914 | defsubr (&Sxwidget_send_keyboard_event); | 958 | defsubr (&Sxwidget_send_keyboard_event); |
| 959 | defsubr (&Sxwidget_webkit_dom_dump); | ||
| 915 | DEFSYM (Qxwidget ,"xwidget"); | 960 | DEFSYM (Qxwidget ,"xwidget"); |
| 916 | 961 | ||
| 917 | DEFSYM (Qcxwidget ,":xwidget"); | 962 | DEFSYM (Qcxwidget ,":xwidget"); |