0
0
mirror of https://github.com/rkd77/elinks.git synced 2025-06-30 22:19:29 -04:00

[mujs] Try to set prototypes

If you know how to fix element.prototype.html test, let me know.
This commit is contained in:
Witold Filipczyk 2025-04-05 09:09:29 +02:00
parent cf239130eb
commit ecfc2e2bad
28 changed files with 182 additions and 156 deletions

View File

@ -470,15 +470,15 @@ mujs_eval_boolback(struct ecmascript_interpreter *interpreter,
void
addmethod(js_State *J, const char *name, js_CFunction fun, int n)
{
const char *realname = strchr(name, '.');
const char *realname = strrchr(name, '.');
realname = realname ? realname + 1 : name;
js_newcfunction(J, fun, name, n);
js_defproperty(J, -2, realname, JS_READONLY | JS_DONTENUM | JS_DONTCONF);
js_defproperty(J, -2, realname, JS_DONTENUM);
}
void addproperty(js_State *J, const char *name, js_CFunction getfun, js_CFunction setfun)
{
const char *realname = strchr(name, '.');
const char *realname = strrchr(name, '.');
realname = realname ? realname + 1 : name;
js_newcfunction(J, getfun, name, 0);
if (setfun) {
@ -486,7 +486,7 @@ void addproperty(js_State *J, const char *name, js_CFunction getfun, js_CFunctio
} else {
js_pushnull(J);
}
js_defaccessor(J, -3, realname, JS_READONLY | JS_DONTENUM | JS_DONTCONF);
js_defaccessor(J, -3, realname, JS_DONTENUM);
}
struct module mujs_module = struct_module(

View File

@ -116,7 +116,7 @@ mjs_push_attr(js_State *J, void *node)
js_newobject(J);
{
js_newuserdata(J, "attr", node, mjs_attr_finalizer);
addmethod(J, "toString", mjs_attr_toString, 0);
addmethod(J, "Attr.prototype.toString", mjs_attr_toString, 0);
addproperty(J, "name", mjs_attr_get_property_name, NULL);
addproperty(J, "value", mjs_attr_get_property_value, NULL);
}

View File

@ -239,9 +239,9 @@ mjs_push_attributes(js_State *J, void *node)
js_newarray(J);
{
js_newuserdata(J, "attribute", node, mjs_attributes_finalizer);
addmethod(J, "item", mjs_attributes_item, 1);
addmethod(J, "getNamedItem", mjs_attributes_getNamedItem, 1);
addmethod(J, "toString", mjs_attributes_toString, 0);
addmethod(J, "Attribute.prototype.item", mjs_attributes_item, 1);
addmethod(J, "Attribute.prototype.getNamedItem", mjs_attributes_getNamedItem, 1);
addmethod(J, "Attribute.prototype.toString", mjs_attributes_toString, 0);
// addproperty(J, "length", mjs_attributes_get_property_length, NULL);
mjs_attributes_set_items(J, node);

View File

@ -262,9 +262,9 @@ mjs_push_collection(js_State *J, void *node)
js_newarray(J);
{
js_newuserdata(J, "collection", node, mjs_htmlCollection_finalizer);
addmethod(J, "item", mjs_htmlCollection_item, 1);
addmethod(J, "namedItem", mjs_htmlCollection_namedItem, 1);
addmethod(J, "toString", mjs_htmlCollection_toString, 0);
addmethod(J, "htmlCollection.prototype.item", mjs_htmlCollection_item, 1);
addmethod(J, "htmlCollection.prototype.namedItem", mjs_htmlCollection_namedItem, 1);
addmethod(J, "htmlCollection.prototype.toString", mjs_htmlCollection_toString, 0);
addproperty(J, "length", mjs_htmlCollection_get_property_length, NULL);
mjs_htmlCollection_set_items(J, node);
}

View File

@ -271,9 +271,9 @@ mjs_push_collection2(js_State *J, void *node)
js_newarray(J);
{
js_newuserdata(J, "collection2", node, mjs_htmlCollection2_finalizer);
addmethod(J, "item", mjs_htmlCollection2_item, 1);
addmethod(J, "namedItem", mjs_htmlCollection2_namedItem, 1);
addmethod(J, "toString", mjs_htmlCollection2_toString, 0);
addmethod(J, "htmlCollection2.prototype.item", mjs_htmlCollection2_item, 1);
addmethod(J, "htmlCollection2.prototype.namedItem", mjs_htmlCollection2_namedItem, 1);
addmethod(J, "htmlCollection2.prototype.toString", mjs_htmlCollection2_toString, 0);
addproperty(J, "length", mjs_htmlCollection2_get_property_length, NULL);
mjs_htmlCollection2_set_items(J, node);
}

View File

@ -117,10 +117,10 @@ mjs_push_CSSStyleDeclaration(js_State *J, void *node)
js_newarray(J);
{
js_newuserdata(J, "CSSStyleDeclaration", node, mjs_CSSStyleDeclaration_finalizer);
addmethod(J, "getPropertyValue", mjs_CSSStyleDeclaration_getPropertyValue, 1);
addmethod(J, "item", mjs_CSSStyleDeclaration_item, 1);
addmethod(J, "namedItem", mjs_CSSStyleDeclaration_namedItem, 1);
addmethod(J, "toString", mjs_CSSStyleDeclaration_toString, 0);
addmethod(J, "CSSStyleDeclaration.prototype.getPropertyValue", mjs_CSSStyleDeclaration_getPropertyValue, 1);
addmethod(J, "CSSStyleDeclaration.prototype.item", mjs_CSSStyleDeclaration_item, 1);
addmethod(J, "CSSStyleDeclaration.prototype.namedItem", mjs_CSSStyleDeclaration_namedItem, 1);
addmethod(J, "CSSStyleDeclaration.prototype.toString", mjs_CSSStyleDeclaration_toString, 0);
addproperty(J, "length", mjs_CSSStyleDeclaration_get_property_length, NULL);
mjs_CSSStyleDeclaration_set_items(J, node);
}

View File

@ -333,7 +333,7 @@ mjs_customEvent_constructor(js_State *J)
js_newobject(J);
{
js_newuserdata(J, "event", event, mjs_customEvent_finalizer);
addmethod(J, "preventDefault", mjs_customEvent_preventDefault, 0);
addmethod(J, "CustomEvent.prototype.preventDefault", mjs_customEvent_preventDefault, 0);
addproperty(J, "bubbles", mjs_customEvent_get_property_bubbles, NULL);
addproperty(J, "cancelable", mjs_customEvent_get_property_cancelable, NULL);
// addproperty(J, "composed", mjs_customEvent_get_property_composed, NULL);

View File

@ -1845,23 +1845,23 @@ mjs_document_constructor(js_State *J)
js_newobject(J);
{
js_newuserdata(J, "document", doc_private, mjs_doc_private_finalizer);
addmethod(J, "addEventListener", mjs_document_addEventListener, 3);
addmethod(J, "createComment", mjs_document_createComment, 1);
addmethod(J, "createDocumentFragment",mjs_document_createDocumentFragment, 0);
addmethod(J, "createElement", mjs_document_createElement, 1);
addmethod(J, "createTextNode", mjs_document_createTextNode, 1);
addmethod(J, "dispatchEvent", mjs_document_dispatchEvent, 1);
addmethod(J, "write", mjs_document_write, 1);
addmethod(J, "writeln", mjs_document_writeln, 1);
addmethod(J, "replace", mjs_document_replace, 2);
addmethod(J, "getElementById", mjs_document_getElementById, 1);
addmethod(J, "getElementsByClassName", mjs_document_getElementsByClassName, 1);
// addmethod(J, "getElementsByName", mjs_document_getElementsByName, 1);
addmethod(J, "getElementsByTagName", mjs_document_getElementsByTagName, 1);
addmethod(J, "querySelector", mjs_document_querySelector, 1);
addmethod(J, "querySelectorAll", mjs_document_querySelectorAll, 1);
addmethod(J, "removeEventListener", mjs_document_removeEventListener, 3);
addmethod(J, "toString", mjs_document_toString, 0);
addmethod(J, "Document.property.addEventListener", mjs_document_addEventListener, 3);
addmethod(J, "Document.property.createComment", mjs_document_createComment, 1);
addmethod(J, "Document.property.createDocumentFragment",mjs_document_createDocumentFragment, 0);
addmethod(J, "Document.property.createElement", mjs_document_createElement, 1);
addmethod(J, "Document.property.createTextNode", mjs_document_createTextNode, 1);
addmethod(J, "Document.property.dispatchEvent", mjs_document_dispatchEvent, 1);
addmethod(J, "Document.property.write", mjs_document_write, 1);
addmethod(J, "Document.property.writeln", mjs_document_writeln, 1);
addmethod(J, "Document.property.replace", mjs_document_replace, 2);
addmethod(J, "Document.property.getElementById", mjs_document_getElementById, 1);
addmethod(J, "Document.property.getElementsByClassName", mjs_document_getElementsByClassName, 1);
// addmethod(J, "Document.property.getElementsByName", mjs_document_getElementsByName, 1);
addmethod(J, "Document.property.getElementsByTagName", mjs_document_getElementsByTagName, 1);
addmethod(J, "Document.property.querySelector", mjs_document_querySelector, 1);
addmethod(J, "Document.property.querySelectorAll", mjs_document_querySelectorAll, 1);
addmethod(J, "Document.property.removeEventListener", mjs_document_removeEventListener, 3);
addmethod(J, "Document.property.toString", mjs_document_toString, 0);
addproperty(J, "anchors", mjs_document_get_property_anchors, NULL);
addproperty(J, "baseURI", mjs_document_get_property_baseURI, NULL);

View File

@ -59,7 +59,7 @@ mjs_domparser_constructor(js_State *J)
#endif
js_newobject(J);
{
addmethod(J, "parseFromString", mjs_domparser_parseFromString, 2);
addmethod(J, "DOMParser.prototype.parseFromString", mjs_domparser_parseFromString, 2);
}
}

View File

@ -3971,10 +3971,12 @@ mjs_push_element(js_State *J, void *node)
#ifdef ECMASCRIPT_DEBUG
fprintf(stderr, "Before: %s:%d\n", __FUNCTION__, __LINE__);
#endif
dom_node_ref((dom_node *)node);
if (node) {
dom_node_ref((dom_node *)node);
attr_save_in_map(map_privates, node, el_private);
attr_save_in_map(map_elements, el_private, node);
attr_save_in_map(map_privates, node, el_private);
attr_save_in_map(map_elements, el_private, node);
}
}
js_newobject(J);
@ -3982,36 +3984,36 @@ fprintf(stderr, "Before: %s:%d\n", __FUNCTION__, __LINE__);
js_copy(J, 0);
el_private->thisval = js_ref(J);
js_newuserdata(J, "element", el_private, mjs_element_finalizer);
addmethod(J, "addEventListener", mjs_element_addEventListener, 3);
addmethod(J, "append",mjs_element_append, 1);
addmethod(J, "appendChild",mjs_element_appendChild, 1);
addmethod(J, "blur", mjs_element_blur, 0);
addmethod(J, "click", mjs_element_click, 0);
addmethod(J, "cloneNode", mjs_element_cloneNode, 1);
addmethod(J, "closest", mjs_element_closest, 1);
addmethod(J, "contains", mjs_element_contains, 1);
addmethod(J, "dispatchEvent", mjs_element_dispatchEvent, 1);
addmethod(J, "focus", mjs_element_focus, 0);
addmethod(J, "getAttribute", mjs_element_getAttribute, 1);
addmethod(J, "getAttributeNode", mjs_element_getAttributeNode, 1);
addmethod(J, "getBoundingClientRect", mjs_element_getBoundingClientRect, 0);
addmethod(J, "getElementsByTagName", mjs_element_getElementsByTagName, 1);
addmethod(J, "hasAttribute", mjs_element_hasAttribute, 1);
addmethod(J, "hasAttributes", mjs_element_hasAttributes, 0);
addmethod(J, "hasChildNodes", mjs_element_hasChildNodes, 0);
addmethod(J, "insertBefore", mjs_element_insertBefore, 2);
addmethod(J, "isEqualNode", mjs_element_isEqualNode, 1);
addmethod(J, "isSameNode", mjs_element_isSameNode, 1);
addmethod(J, "matches", mjs_element_matches, 1);
addmethod(J, "querySelector", mjs_element_querySelector, 1);
addmethod(J, "querySelectorAll", mjs_element_querySelectorAll, 1);
addmethod(J, "remove", mjs_element_remove, 0);
addmethod(J, "removeAttribute", mjs_element_removeAttribute, 1);
addmethod(J, "removeChild", mjs_element_removeChild, 1);
addmethod(J, "removeEventListener", mjs_element_removeEventListener, 3);
addmethod(J, "replaceWith", mjs_element_replaceWith, 1);
addmethod(J, "setAttribute", mjs_element_setAttribute, 2);
addmethod(J, "toString", mjs_element_toString, 0);
addmethod(J, "Element.prototype.addEventListener", mjs_element_addEventListener, 3);
addmethod(J, "Element.prototype.append",mjs_element_append, 1);
addmethod(J, "Element.prototype.appendChild",mjs_element_appendChild, 1);
addmethod(J, "Element.prototype.blur", mjs_element_blur, 0);
addmethod(J, "Element.prototype.click", mjs_element_click, 0);
addmethod(J, "Element.prototype.cloneNode", mjs_element_cloneNode, 1);
addmethod(J, "Element.prototype.closest", mjs_element_closest, 1);
addmethod(J, "Element.prototype.contains", mjs_element_contains, 1);
addmethod(J, "Element.prototype.dispatchEvent", mjs_element_dispatchEvent, 1);
addmethod(J, "Element.prototype.focus", mjs_element_focus, 0);
addmethod(J, "Element.prototype.getAttribute", mjs_element_getAttribute, 1);
addmethod(J, "Element.prototype.getAttributeNode", mjs_element_getAttributeNode, 1);
addmethod(J, "Element.prototype.getBoundingClientRect", mjs_element_getBoundingClientRect, 0);
addmethod(J, "Element.prototype.getElementsByTagName", mjs_element_getElementsByTagName, 1);
addmethod(J, "Element.prototype.hasAttribute", mjs_element_hasAttribute, 1);
addmethod(J, "Element.prototype.hasAttributes", mjs_element_hasAttributes, 0);
addmethod(J, "Element.prototype.hasChildNodes", mjs_element_hasChildNodes, 0);
addmethod(J, "Element.prototype.insertBefore", mjs_element_insertBefore, 2);
addmethod(J, "Element.prototype.isEqualNode", mjs_element_isEqualNode, 1);
addmethod(J, "Element.prototype.isSameNode", mjs_element_isSameNode, 1);
addmethod(J, "Element.prototype.matches", mjs_element_matches, 1);
addmethod(J, "Element.prototype.querySelector", mjs_element_querySelector, 1);
addmethod(J, "Element.prototype.querySelectorAll", mjs_element_querySelectorAll, 1);
addmethod(J, "Element.prototype.remove", mjs_element_remove, 0);
addmethod(J, "Element.prototype.removeAttribute", mjs_element_removeAttribute, 1);
addmethod(J, "Element.prototype.removeChild", mjs_element_removeChild, 1);
addmethod(J, "Element.prototype.removeEventListener", mjs_element_removeEventListener, 3);
addmethod(J, "Element.prototype.replaceWith", mjs_element_replaceWith, 1);
addmethod(J, "Element.prototype.setAttribute", mjs_element_setAttribute, 2);
addmethod(J, "Element.prototype.toString", mjs_element_toString, 0);
addproperty(J, "attributes", mjs_element_get_property_attributes, NULL);
addproperty(J, "checked", mjs_element_get_property_checked, mjs_element_set_property_checked);
@ -4065,14 +4067,38 @@ fprintf(stderr, "Before: %s:%d\n", __FUNCTION__, __LINE__);
}
}
static void
mjs_element_fun(js_State *J)
{
#ifdef ECMASCRIPT_DEBUG
fprintf(stderr, "%s:%s\n", __FILE__, __FUNCTION__);
#endif
js_pushundefined(J);
}
static void
mjs_element_constructor(js_State *J)
{
#ifdef ECMASCRIPT_DEBUG
fprintf(stderr, "%s:%s\n", __FILE__, __FUNCTION__);
#endif
mjs_push_element(J, NULL);
}
int
mjs_element_init(js_State *J)
{
#if 0
mjs_push_node(J, NULL);
#if 1
js_pushglobal(J);
js_newcconstructor(J, mjs_element_fun, mjs_element_constructor, "Element", 1);
js_defglobal(J, "Element", JS_DONTENUM);
#endif
return 0;
#endif
#if 0
mjs_push_element(J, NULL);
js_defglobal(J, "Element", JS_DONTENUM);
return 0;
#endif
}
void

View File

@ -237,7 +237,7 @@ mjs_event_constructor(js_State *J)
js_newobject(J);
{
js_newuserdata(J, "event", event, mjs_event_finalizer);
addmethod(J, "preventDefault", mjs_event_preventDefault, 0);
addmethod(J, "Event.prototype.preventDefault", mjs_event_preventDefault, 0);
addproperty(J, "bubbles", mjs_event_get_property_bubbles, NULL);
addproperty(J, "cancelable", mjs_event_get_property_cancelable, NULL);
// addproperty(J, "composed", mjs_event_get_property_composed, NULL);

View File

@ -814,9 +814,9 @@ mjs_push_form_object(js_State *J, struct form *form)
{
js_newuserdata(J, "form", form, mjs_form_finalizer);
addmethod(J, "reset", mjs_form_reset, 0);
addmethod(J, "submit", mjs_form_submit, 0);
addmethod(J, "toString", mjs_form_toString, 0);
addmethod(J, "form.reset", mjs_form_reset, 0);
addmethod(J, "form.submit", mjs_form_submit, 0);
addmethod(J, "form.toString", mjs_form_toString, 0);
addproperty(J, "action", mjs_form_get_property_action, mjs_form_set_property_action);
addproperty(J, "elements", mjs_form_get_property_elements, NULL);

View File

@ -194,9 +194,9 @@ mjs_push_forms(js_State *J, void *node)
{
js_newuserdata(J, "forms", node, NULL);
addmethod(J, "item", mjs_forms_item, 1);
addmethod(J, "namedItem", mjs_forms_namedItem, 1);
addmethod(J, "toString", mjs_forms_toString, 0);
addmethod(J, "forms.item", mjs_forms_item, 1);
addmethod(J, "forms.namedItem", mjs_forms_namedItem, 1);
addmethod(J, "forms.toString", mjs_forms_toString, 0);
addproperty(J, "length", mjs_forms_get_property_length, NULL);
mjs_forms_set_items(J);

View File

@ -1435,20 +1435,20 @@ mjs_DocumentFragment_constructor(js_State *J)
js_copy(J, 0);
el_private->thisval = js_ref(J);
js_newuserdata(J, "fragment", el_private, mjs_fragment_finalizer);
addmethod(J, "addEventListener", mjs_fragment_addEventListener, 3);
addmethod(J, "appendChild",mjs_fragment_appendChild, 1);
addmethod(J, "cloneNode", mjs_fragment_cloneNode, 1);
addmethod(J, "contains", mjs_fragment_contains, 1);
addmethod(J, "dispatchEvent", mjs_fragment_dispatchEvent, 1);
addmethod(J, "hasChildNodes", mjs_fragment_hasChildNodes, 0);
addmethod(J, "insertBefore", mjs_fragment_insertBefore, 2);
addmethod(J, "isEqualNode", mjs_fragment_isEqualNode, 1);
addmethod(J, "isSameNode", mjs_fragment_isSameNode, 1);
addmethod(J, "querySelector", mjs_fragment_querySelector, 1);
addmethod(J, "querySelectorAll", mjs_fragment_querySelectorAll, 1);
addmethod(J, "removeChild", mjs_fragment_removeChild, 1);
addmethod(J, "removeEventListener", mjs_fragment_removeEventListener, 3);
addmethod(J, "toString", mjs_fragment_toString, 0);
addmethod(J, "DocumentFragment.prototype.addEventListener", mjs_fragment_addEventListener, 3);
addmethod(J, "DocumentFragment.prototype.appendChild",mjs_fragment_appendChild, 1);
addmethod(J, "DocumentFragment.prototype.cloneNode", mjs_fragment_cloneNode, 1);
addmethod(J, "DocumentFragment.prototype.contains", mjs_fragment_contains, 1);
addmethod(J, "DocumentFragment.prototype.dispatchEvent", mjs_fragment_dispatchEvent, 1);
addmethod(J, "DocumentFragment.prototype.hasChildNodes", mjs_fragment_hasChildNodes, 0);
addmethod(J, "DocumentFragment.prototype.insertBefore", mjs_fragment_insertBefore, 2);
addmethod(J, "DocumentFragment.prototype.isEqualNode", mjs_fragment_isEqualNode, 1);
addmethod(J, "DocumentFragment.prototype.isSameNode", mjs_fragment_isSameNode, 1);
addmethod(J, "DocumentFragment.prototype.querySelector", mjs_fragment_querySelector, 1);
addmethod(J, "DocumentFragment.prototype.querySelectorAll", mjs_fragment_querySelectorAll, 1);
addmethod(J, "DocumentFragment.prototype.removeChild", mjs_fragment_removeChild, 1);
addmethod(J, "DocumentFragment.prototype.removeEventListener", mjs_fragment_removeEventListener, 3);
addmethod(J, "DocumentFragment.prototype.toString", mjs_fragment_toString, 0);
addproperty(J, "children", mjs_fragment_get_property_children, NULL);
addproperty(J, "childElementCount", mjs_fragment_get_property_childElementCount, NULL);

View File

@ -63,7 +63,7 @@ mjs_push_implementation(js_State *J)
js_newobject(J);
{
addmethod(J, "createHTMLDocument", mjs_implementation_createHTMLDocument, 1);
addmethod(J, "toString", mjs_implementation_toString, 0);
addmethod(J, "Implementation.prototype.createHTMLDocument", mjs_implementation_createHTMLDocument, 1);
addmethod(J, "Implementation.prototype.toString", mjs_implementation_toString, 0);
}
}

View File

@ -1322,11 +1322,11 @@ mjs_push_input_object(js_State *J, struct form_state *fs)
{
js_newuserdata(J, "input", fs, mjs_input_finalizer);
addmethod(J, "blur", mjs_input_blur, 0);
addmethod(J, "click", mjs_input_click, 0);
addmethod(J, "focus", mjs_input_focus, 0);
addmethod(J, "select", mjs_input_select, 0);
addmethod(J, "toString", mjs_input_toString, 0);
addmethod(J, "input.blur", mjs_input_blur, 0);
addmethod(J, "input.click", mjs_input_click, 0);
addmethod(J, "input.focus", mjs_input_focus, 0);
addmethod(J, "input.select", mjs_input_select, 0);
addmethod(J, "input.toString", mjs_input_toString, 0);
addproperty(J, "accessKey", mjs_input_get_property_accessKey, mjs_input_set_property_accessKey);
addproperty(J, "alt", mjs_input_get_property_alt, mjs_input_set_property_alt);

View File

@ -358,7 +358,7 @@ mjs_keyboardEvent_constructor(js_State *J)
js_newobject(J);
{
js_newuserdata(J, "event", event, mjs_keyboardEvent_finalizer);
addmethod(J, "preventDefault", mjs_keyboardEvent_preventDefault, 0);
addmethod(J, "KeyboardEvent.prototype.preventDefault", mjs_keyboardEvent_preventDefault, 0);
addproperty(J, "bubbles", mjs_keyboardEvent_get_property_bubbles, NULL);
addproperty(J, "cancelable", mjs_keyboardEvent_get_property_cancelable, NULL);
addproperty(J, "code", mjs_keyboardEvent_get_property_code, NULL);

View File

@ -696,11 +696,11 @@ mjs_location_init(js_State *J, struct view_state *vs)
js_newobject(J);
{
js_newuserdata(J, "location", vs, mjs_location_finalizer);
addmethod(J, "assign", mjs_location_assign, 1);
addmethod(J, "reload", mjs_location_reload, 0);
addmethod(J, "replace", mjs_location_replace, 1);
addmethod(J, "toString", mjs_location_toString, 0);
addmethod(J, "toLocaleString", mjs_location_toString, 0);
addmethod(J, "location.assign", mjs_location_assign, 1);
addmethod(J, "location.reload", mjs_location_reload, 0);
addmethod(J, "location.replace", mjs_location_replace, 1);
addmethod(J, "location.toString", mjs_location_toString, 0);
addmethod(J, "location.toLocaleString", mjs_location_toString, 0);
addproperty(J, "hash", mjs_location_get_property_hash, mjs_location_set_property_hash);
addproperty(J, "host", mjs_location_get_property_host, mjs_location_set_property_host);

View File

@ -305,7 +305,7 @@ mjs_messageEvent_constructor(js_State *J)
js_newobject(J);
{
js_newuserdata(J, "event", event, mjs_messageEvent_finalizer);
addmethod(J, "preventDefault", mjs_messageEvent_preventDefault, 0);
addmethod(J, "MessageEvent.prototype.preventDefault", mjs_messageEvent_preventDefault, 0);
addproperty(J, "bubbles", mjs_messageEvent_get_property_bubbles, NULL);
addproperty(J, "cancelable", mjs_messageEvent_get_property_cancelable, NULL);
addproperty(J, "composed", mjs_messageEvent_get_property_composed, NULL);

View File

@ -154,8 +154,8 @@ mjs_push_nodelist(js_State *J, void *node)
{
js_newuserdata(J, "nodelist", node, mjs_nodeList_finalizer);
// addproperty(J, "length", mjs_nodeList_get_property_length, NULL);
addmethod(J, "item", mjs_nodeList_item, 1);
addmethod(J, "toString", mjs_nodeList_toString, 0);
addmethod(J, "Nodelist.prototype.item", mjs_nodeList_item, 1);
addmethod(J, "Nodelist.prototype.toString", mjs_nodeList_toString, 0);
mjs_nodeList_set_items(J, node);
}
//attr_save_in_map(map_nodelist, node, node);

View File

@ -136,8 +136,8 @@ mjs_push_nodelist2(js_State *J, void *nodes)
{
js_newuserdata(J, "nodelist2", nodes, mjs_nodeList2_finalizer);
// addproperty(J, "length", mjs_nodeList_get_property_length, NULL);
addmethod(J, "item", mjs_nodeList2_item, 1);
addmethod(J, "toString", mjs_nodeList2_toString, 0);
addmethod(J, "Nodelist2.prototype.item", mjs_nodeList2_item, 1);
addmethod(J, "Nodelist2.prototype.toString", mjs_nodeList2_toString, 0);
mjs_nodeList2_set_items(J, nodes);
}
attr_save_in_map(map_nodelist2, nodes, nodes);

View File

@ -461,7 +461,7 @@ mjs_push_style(js_State *J, void *node)
js_newobject(J);
{
js_newuserdata(J, "style", node, mjs_style_finalizer);
addmethod(J, "toString", mjs_style_toString, 0);
addmethod(J, "style.toString", mjs_style_toString, 0);
addproperty(J, "background", mjs_style_get_property_background, mjs_style_set_property_background);
addproperty(J, "backgroundClip", mjs_style_get_property_backgroundClip, mjs_style_set_property_backgroundClip);
addproperty(J, "backgroundColor", mjs_style_get_property_backgroundColor, mjs_style_set_property_backgroundColor);

View File

@ -1377,20 +1377,20 @@ fprintf(stderr, "Before: %s:%d\n", __FUNCTION__, __LINE__);
js_copy(J, 0);
el_private->thisval = js_ref(J);
js_newuserdata(J, "text", el_private, mjs_text_finalizer);
addmethod(J, "addEventListener", mjs_text_addEventListener, 3);
addmethod(J, "appendChild",mjs_text_appendChild, 1);
addmethod(J, "cloneNode", mjs_text_cloneNode, 1);
addmethod(J, "contains", mjs_text_contains, 1);
addmethod(J, "dispatchEvent", mjs_text_dispatchEvent, 1);
addmethod(J, "hasChildNodes", mjs_text_hasChildNodes, 0);
addmethod(J, "insertBefore", mjs_text_insertBefore, 2);
addmethod(J, "isEqualNode", mjs_text_isEqualNode, 1);
addmethod(J, "isSameNode", mjs_text_isSameNode, 1);
addmethod(J, "querySelector", mjs_text_querySelector, 1);
addmethod(J, "querySelectorAll", mjs_text_querySelectorAll, 1);
addmethod(J, "removeChild", mjs_text_removeChild, 1);
addmethod(J, "removeEventListener", mjs_text_removeEventListener, 3);
addmethod(J, "toString", mjs_text_toString, 0);
addmethod(J, "Text.prototype.addEventListener", mjs_text_addEventListener, 3);
addmethod(J, "Text.prototype.appendChild",mjs_text_appendChild, 1);
addmethod(J, "Text.prototype.cloneNode", mjs_text_cloneNode, 1);
addmethod(J, "Text.prototype.contains", mjs_text_contains, 1);
addmethod(J, "Text.prototype.dispatchEvent", mjs_text_dispatchEvent, 1);
addmethod(J, "Text.prototype.hasChildNodes", mjs_text_hasChildNodes, 0);
addmethod(J, "Text.prototype.insertBefore", mjs_text_insertBefore, 2);
addmethod(J, "Text.prototype.isEqualNode", mjs_text_isEqualNode, 1);
addmethod(J, "Text.prototype.isSameNode", mjs_text_isSameNode, 1);
addmethod(J, "Text.prototype.querySelector", mjs_text_querySelector, 1);
addmethod(J, "Text.prototype.querySelectorAll", mjs_text_querySelectorAll, 1);
addmethod(J, "Text.prototype.removeChild", mjs_text_removeChild, 1);
addmethod(J, "Text.prototype.removeEventListener", mjs_text_removeEventListener, 3);
addmethod(J, "Text.prototype.toString", mjs_text_toString, 0);
addproperty(J, "children", mjs_text_get_property_children, NULL);
addproperty(J, "childElementCount", mjs_text_get_property_childElementCount, NULL);

View File

@ -199,10 +199,10 @@ mjs_push_tokenlist(js_State *J, void *node)
js_newobject(J);
{
js_newuserdata(J, "tokenlist", node, mjs_tokenlist_finalizer);
addmethod(J, "add", mjs_tokenlist_add, 1);
addmethod(J, "contains", mjs_tokenlist_contains, 1);
addmethod(J, "remove", mjs_tokenlist_remove, 1);
addmethod(J, "toggle", mjs_tokenlist_toggle, 1);
addmethod(J, "toString", mjs_tokenlist_toString, 0);
addmethod(J, "Tokenlist.prototype.add", mjs_tokenlist_add, 1);
addmethod(J, "Tokenlist.prototype.contains", mjs_tokenlist_contains, 1);
addmethod(J, "Tokenlist.prototype.remove", mjs_tokenlist_remove, 1);
addmethod(J, "Tokenlist.prototype.toggle", mjs_tokenlist_toggle, 1);
addmethod(J, "Tokenlist.prototype.toString", mjs_tokenlist_toString, 0);
}
}

View File

@ -585,7 +585,7 @@ mjs_url_constructor(js_State *J)
js_newobject(J);
{
js_newuserdata(J, "URL", url, mjs_url_finalizer);
addmethod(J, "toString", mjs_url_toString, 0);
addmethod(J, "URL.prototype.toString", mjs_url_toString, 0);
addproperty(J, "hash", mjs_url_get_property_hash, mjs_url_set_property_hash);
addproperty(J, "host", mjs_url_get_property_host, mjs_url_set_property_host);

View File

@ -870,17 +870,17 @@ mjs_push_window(js_State *J, struct view_state *vs)
js_newobject(J);
{
js_newuserdata(J, "window", elwin, mjs_window_finalizer);
addmethod(J, "addEventListener", mjs_window_addEventListener, 3);
addmethod(J, "alert", mjs_window_alert, 1);
addmethod(J, "clearInterval", mjs_window_clearInterval, 1);
addmethod(J, "clearTimeout", mjs_window_clearTimeout, 1);
addmethod(J, "getComputedStyle", mjs_window_getComputedStyle, 2);
addmethod(J, "open", mjs_window_open, 3);
addmethod(J, "postMessage", mjs_window_postMessage, 3);
addmethod(J, "removeEventListener", mjs_window_removeEventListener, 3);
addmethod(J, "setInterval", mjs_window_setInterval, 2);
addmethod(J, "setTimeout", mjs_window_setTimeout, 2);
addmethod(J, "toString", mjs_window_toString, 0);
addmethod(J, "window.addEventListener", mjs_window_addEventListener, 3);
addmethod(J, "window.alert", mjs_window_alert, 1);
addmethod(J, "window.clearInterval", mjs_window_clearInterval, 1);
addmethod(J, "window.clearTimeout", mjs_window_clearTimeout, 1);
addmethod(J, "window.getComputedStyle", mjs_window_getComputedStyle, 2);
addmethod(J, "window.open", mjs_window_open, 3);
addmethod(J, "window.postMessage", mjs_window_postMessage, 3);
addmethod(J, "window.removeEventListener", mjs_window_removeEventListener, 3);
addmethod(J, "window.setInterval", mjs_window_setInterval, 2);
addmethod(J, "window.setTimeout", mjs_window_setTimeout, 2);
addmethod(J, "window.toString", mjs_window_toString, 0);
addproperty(J, "closed", mjs_window_get_property_closed, NULL);
addproperty(J, "event", mjs_window_get_property_event, NULL);

View File

@ -1460,15 +1460,15 @@ mjs_xhr_constructor(js_State *J)
{
xhr->thisval = js_ref(J);
js_newuserdata(J, "xhr", xhr, mjs_xhr_finalizer);
addmethod(J, "abort", mjs_xhr_abort, 0);
addmethod(J, "addEventListener", mjs_xhr_addEventListener, 3);
addmethod(J, "getAllResponseHeaders", mjs_xhr_getAllResponseHeaders, 0);
addmethod(J, "getResponseHeader", mjs_xhr_getResponseHeader, 1);
addmethod(J, "open", mjs_xhr_open, 5);
addmethod(J, "overrideMimeType", mjs_xhr_overrideMimeType, 1);
addmethod(J, "removeEventListener", mjs_xhr_removeEventListener, 3);
addmethod(J, "send", mjs_xhr_send, 1);
addmethod(J, "setRequestHeader", mjs_xhr_setRequestHeader, 2);
addmethod(J, "XMLHttpRequest.prototype.abort", mjs_xhr_abort, 0);
addmethod(J, "XMLHttpRequest.prototype.addEventListener", mjs_xhr_addEventListener, 3);
addmethod(J, "XMLHttpRequest.prototype.getAllResponseHeaders", mjs_xhr_getAllResponseHeaders, 0);
addmethod(J, "XMLHttpRequest.prototype.getResponseHeader", mjs_xhr_getResponseHeader, 1);
addmethod(J, "XMLHttpRequest.prototype.open", mjs_xhr_open, 5);
addmethod(J, "XMLHttpRequest.prototype.overrideMimeType", mjs_xhr_overrideMimeType, 1);
addmethod(J, "XMLHttpRequest.prototype.removeEventListener", mjs_xhr_removeEventListener, 3);
addmethod(J, "XMLHttpRequest.prototype.send", mjs_xhr_send, 1);
addmethod(J, "XMLHttpRequest.prototype.setRequestHeader", mjs_xhr_setRequestHeader, 2);
addproperty(J, "UNSENT", mjs_xhr_static_get_property_UNSENT, NULL);
addproperty(J, "OPENED", mjs_xhr_static_get_property_OPENED, NULL);

View File

@ -1,9 +1,9 @@
<script>
console.error('element.prototype.matches.html');
if (Element.prototype.matches) {
console.assert(1, 'matches');
if (!Element.prototype.matches) {
console.assert(false, 'not matches');
} else {
console.assert(0, 'not matches');
console.assert(true, 'matches');
}
console.exit();
</script>