/* HTML element binding using duktape and libdom
*
* Copyright 2015 Vincent Sanders
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
* Released under the terms of the MIT License,
* http://www.opensource.org/licenses/mit-license
*/
prologue HTMLElement ()
%{
#include
#define HANDLER_MAGIC MAGIC(HANDLER_MAP)
%}
init HTMLElement(struct dom_html_element *html_element::element);
getter HTMLElement::dir();
setter HTMLElement::dir();
getter HTMLElement::lang();
setter HTMLElement::lang();
getter HTMLElement::title();
setter HTMLElement::title();
setter HTMLElement::onclick()
%{
/* handlerfn */
duk_push_this(ctx);
/* handlerfn this */
duk_get_prop_string(ctx, -1, HANDLER_MAGIC);
/* handlerfn this handlers */
duk_push_lstring(ctx, "click", 5);
/* handlerfn this handlers click */
duk_dup(ctx, -4);
/* handlerfn this handlers click handlerfn */
duk_put_prop(ctx, -3);
/* handlerfn this handlers */
dukky_register_event_listener_for(ctx,
(dom_element *)((node_private_t *)priv)->node,
corestring_dom_click);
return 0;
%}
getter HTMLElement::onclick()
%{
dom_event_target *et = (dom_event_target *)(((node_private_t *)priv)->node);
dom_string *name;
dom_exception exc;
exc = dom_string_create((const uint8_t *)"click", 5, &name);
if (exc != DOM_NO_ERR) return 0;
duk_push_this(ctx);
/* ... node */
if (dukky_get_current_value_of_event_handler(ctx, name, et) == false) {
dom_string_unref(name);
return 0;
}
dom_string_unref(name);
/* ... handler node */
duk_pop(ctx);
/* ... handler */
return 1;
%}