summaryrefslogtreecommitdiff
path: root/javascript/jsapi/htmlelement.bnd
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2012-11-18 12:38:07 +0000
committerVincent Sanders <vince@kyllikki.org>2012-11-18 12:38:07 +0000
commitbec871152864b1cfb42484505a6622f7f524a405 (patch)
treed3e06746b6de821a4a02eaba14ae3ff0d5474501 /javascript/jsapi/htmlelement.bnd
parentb1ca83ad8c68f18194d47c06bdcb410064ca8c25 (diff)
downloadnetsurf-bec871152864b1cfb42484505a6622f7f524a405.tar.gz
netsurf-bec871152864b1cfb42484505a6622f7f524a405.tar.bz2
implement lastElementChild
Diffstat (limited to 'javascript/jsapi/htmlelement.bnd')
-rw-r--r--javascript/jsapi/htmlelement.bnd31
1 files changed, 31 insertions, 0 deletions
diff --git a/javascript/jsapi/htmlelement.bnd b/javascript/jsapi/htmlelement.bnd
index 3b533ebef..898f78188 100644
--- a/javascript/jsapi/htmlelement.bnd
+++ b/javascript/jsapi/htmlelement.bnd
@@ -89,6 +89,37 @@ getter firstElementChild %{
%}
getter lastElementChild %{
+ dom_node *element;
+ dom_exception exc;
+ dom_node_type node_type;
+ dom_node *sib_node;
+
+ exc = dom_node_get_last_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)) {
+ /* found it */
+ jsret = jsapi_new_HTMLElement(cx,
+ NULL,
+ NULL,
+ (dom_element *)element,
+ private->htmlc);
+ break;
+ }
+
+ exc = dom_node_get_previous_sibling(element, &sib_node);
+ dom_node_unref(element);
+ if (exc == DOM_NO_ERR) {
+ element = sib_node;
+ } else {
+ element = NULL;
+ }
+
+ }
%}
getter previousElementSibling %{