From f5891097cc955e05946f114a7e28b36f61faddf1 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sun, 5 Aug 2012 10:54:18 +0100 Subject: Inital work on supporting getelementbyid --- javascript/jsapi/document.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'javascript') 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; } -- cgit v1.2.3