diff options
author | Vincent Sanders <vince@kyllikki.org> | 2012-11-18 17:35:52 +0000 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2012-11-18 17:35:52 +0000 |
commit | fa9046fc97cb73329652c86d3c77376d32935333 (patch) | |
tree | c3ef12bae8f07485aa93d6fc780aeb4781391808 /javascript/jsapi | |
parent | 99d3633e0348fcff3f99d87696b57a70cbdcaf4d (diff) | |
download | netsurf-fa9046fc97cb73329652c86d3c77376d32935333.tar.gz netsurf-fa9046fc97cb73329652c86d3c77376d32935333.tar.bz2 |
implement childElementCount
Diffstat (limited to 'javascript/jsapi')
-rw-r--r-- | javascript/jsapi/htmlelement.bnd | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/javascript/jsapi/htmlelement.bnd b/javascript/jsapi/htmlelement.bnd index 0730ad44b..71bb31bc1 100644 --- a/javascript/jsapi/htmlelement.bnd +++ b/javascript/jsapi/htmlelement.bnd @@ -187,3 +187,30 @@ getter nextElementSibling %{ } } %} + +getter childElementCount %{ + dom_node *element; + dom_exception exc; + dom_node_type node_type; + dom_node *next_node; + + exc = dom_node_get_first_child(private->node, &element); + if (exc != DOM_NO_ERR) { + return JS_FALSE; + } + + while (element != NULL) { + exc = dom_node_get_node_type(element, &node_type); + if ((exc == DOM_NO_ERR) && (node_type == DOM_ELEMENT_NODE)) { + jsret += 1; + } + + exc = dom_node_get_next_sibling(element, &next_node); + dom_node_unref(element); + if (exc == DOM_NO_ERR) { + element = next_node; + } else { + element = NULL; + } + } +%} |