summaryrefslogtreecommitdiff
path: root/content/handlers/javascript/duktape/Document.bnd
diff options
context:
space:
mode:
Diffstat (limited to 'content/handlers/javascript/duktape/Document.bnd')
-rw-r--r--content/handlers/javascript/duktape/Document.bnd40
1 files changed, 40 insertions, 0 deletions
diff --git a/content/handlers/javascript/duktape/Document.bnd b/content/handlers/javascript/duktape/Document.bnd
index 23e0425e2..8901115d6 100644
--- a/content/handlers/javascript/duktape/Document.bnd
+++ b/content/handlers/javascript/duktape/Document.bnd
@@ -147,6 +147,46 @@ method Document::createElement()
return 1;
%}
+method Document::createElementNS()
+%{
+ dom_node *newnode;
+ dom_exception err;
+ duk_size_t text_len;
+ duk_size_t ns_len;
+ const char *ns = duk_safe_to_lstring(ctx, 0, &ns_len);
+ const char *text = duk_safe_to_lstring(ctx, 0, &text_len);
+ dom_string *text_str;
+ dom_string *ns_str;
+
+ err = dom_string_create((const uint8_t*)ns, ns_len, &ns_str);
+ if (err != DOM_NO_ERR) return 0; /* coerced to undefined */
+
+ err = dom_string_create((const uint8_t*)text, text_len, &text_str);
+ if (err != DOM_NO_ERR) {
+ dom_string_unref(ns_str);
+ return 0; /* coerced to undefined */
+ }
+
+ err = dom_document_create_element_ns(priv->parent.node,
+ ns_str,
+ text_str,
+ &newnode);
+ if (err != DOM_NO_ERR) {
+ dom_string_unref(ns_str);
+ dom_string_unref(text_str);
+ return 0; /* coerced to undefined */
+ }
+
+ dom_string_unref(text_str);
+ dom_string_unref(ns_str);
+
+ dukky_push_node(ctx, newnode);
+
+ dom_node_unref(newnode);
+
+ return 1;
+%}
+
getter Document::head()
%{
struct dom_nodelist *nodes;