summaryrefslogtreecommitdiff
path: root/javascript
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2015-08-11 15:13:14 +0200
committerDaniel Silverstone <dsilvers@digital-scurf.org>2015-08-11 15:13:14 +0200
commita590117246ec8f81d2ad7d7fad4970b0627d55f1 (patch)
treea4fda5c047c9991d87238babd265ef7c91bac30b /javascript
parent73fbaf6fb190dc94ba11eb7a57e5f5238457298f (diff)
downloadnetsurf-a590117246ec8f81d2ad7d7fad4970b0627d55f1.tar.gz
netsurf-a590117246ec8f81d2ad7d7fad4970b0627d55f1.tar.bz2
Element::getElementsByTagName()
Diffstat (limited to 'javascript')
-rw-r--r--javascript/duktape/Element.bnd23
1 files changed, 23 insertions, 0 deletions
diff --git a/javascript/duktape/Element.bnd b/javascript/duktape/Element.bnd
index 1c592b228..706c6676c 100644
--- a/javascript/duktape/Element.bnd
+++ b/javascript/duktape/Element.bnd
@@ -174,3 +174,26 @@ getter Element::childElementCount()
duk_push_uint(ctx, jsret);
return 1;
%}
+
+method Element::getElementsByTagName ()
+%{
+ dom_nodelist *nlist = NULL;
+ dom_exception exc;
+ dom_string *tagname;
+ duk_size_t len;
+ const char *str = duk_to_lstring(ctx, 0, &len);
+
+ exc = dom_string_create(str, len, &tagname);
+
+ if (exc != DOM_NO_ERR) return 0;
+
+ exc = dom_element_get_elements_by_tag_name(priv->parent.node,
+ tagname, &nlist);
+ dom_string_unref(tagname);
+ if (exc != DOM_NO_ERR) return 0;
+ duk_push_pointer(ctx, nlist);
+ dukky_create_object(ctx, PROTO_NAME(NODELIST), 1);
+ dom_nodelist_unref(nlist);
+
+ return 1;
+%}