diff --git a/src/ecmascript/quickjs/element.c b/src/ecmascript/quickjs/element.c index 751ed7478..a115c6c9b 100644 --- a/src/ecmascript/quickjs/element.c +++ b/src/ecmascript/quickjs/element.c @@ -2846,6 +2846,10 @@ js_element_contains(JSContext *ctx, JSValueConst this_val, int argc, JSValueCons return JS_FALSE; } + if (el == el2) { + dom_node_unref(el); + return JS_TRUE; + } bool result_set = false; bool result = false; diff --git a/test/ecmascript/assert/element.contains.html b/test/ecmascript/assert/element.contains.html index 3d8065da9..43b4aa9d6 100644 --- a/test/ecmascript/assert/element.contains.html +++ b/test/ecmascript/assert/element.contains.html @@ -26,8 +26,10 @@ function myFunction() { var span2 = document.getElementById("mySPAN2"); var div = document.getElementById("myDIV").contains(span); var div2 = document.getElementById("myDIV").contains(span2); + var itself = document.getElementById("mySPAN").contains(span); console.assert(div, 'myDIV contains mySPAN'); console.assert(!div2, '!myDIV contains mySPAN2'); + console.assert(itself, 'element contains itself'); } console.error('element.contains.html');