summaryrefslogtreecommitdiff
path: root/javascript/jsapi/document.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2012-08-05 10:54:18 +0100
committerVincent Sanders <vince@netsurf-browser.org>2012-08-05 11:44:43 +0100
commitf5891097cc955e05946f114a7e28b36f61faddf1 (patch)
treecfbad7accb03d2bb4d6bec4983a1adbbe9358534 /javascript/jsapi/document.c
parent9a0f7028a340f0678ce27d6a91f50faf96800187 (diff)
downloadnetsurf-f5891097cc955e05946f114a7e28b36f61faddf1.tar.gz
netsurf-f5891097cc955e05946f114a7e28b36f61faddf1.tar.bz2
Inital work on supporting getelementbyid
Diffstat (limited to 'javascript/jsapi/document.c')
-rw-r--r--javascript/jsapi/document.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/javascript/jsapi/document.c b/javascript/jsapi/document.c
index c54d2f6a5..49144c4a9 100644
--- a/javascript/jsapi/document.c
+++ b/javascript/jsapi/document.c
@@ -115,7 +115,40 @@ static JSClass jsclass_document =
static JSBool JSAPI_NATIVE(getElementById, JSContext *cx, uintN argc, jsval *vp)
{
- JSAPI_SET_RVAL(cx, vp, JSVAL_VOID);
+ JSString* u16_txt;
+ char *txt;
+ unsigned long txtlen;
+ struct html_content *htmlc;
+ dom_string *idstr;
+ dom_element *idelement;
+
+ htmlc = JS_GetInstancePrivate(cx, JS_THIS_OBJECT(cx,vp), &jsclass_document, NULL);
+ if (htmlc == NULL)
+ return JS_FALSE;
+
+ if (htmlc->document == NULL) {
+ /* no document available, this is obviously a problem
+ * for finding elements
+ */
+ JSAPI_SET_RVAL(cx, vp, JSVAL_NULL);
+
+ return JS_TRUE;
+ }
+
+ if (!JS_ConvertArguments(cx, argc, JSAPI_ARGV(cx, vp), "S", &u16_txt))
+ return JS_FALSE;
+
+ JSString_to_char(u16_txt, txt, txtlen);
+
+ dom_string_create((unsigned char*)txt, txtlen, &idstr);
+
+ dom_document_get_element_by_id(htmlc->document, idstr, &idelement);
+
+ if (idelement==NULL) {
+ JSAPI_SET_RVAL(cx, vp, JSVAL_NULL);
+ } else {
+ /* create element object and return it*/
+ }
return JS_TRUE;
}