On 11/4/21 3:10 PM, Gabriel Ivăncescu wrote:
- /* Create a temporary html element and parse it there */
- nsAString_InitDepend(&str, L"HTML");
- nsres = nsIDOMHTMLDocument_CreateElement(doc->nsdoc, &str, (nsIDOMElement**)&nshtml);
- nsAString_Finish(&str);
- if(NS_FAILED(nsres))
return map_nsresult(nsres);- if(name_len == 4 && !wcsnicmp(tag + 1, L"HTML", 4)) {
FIXME("Returning <html> element with no attributes\n");+*ret = (nsIDOMElement*)nshtml;
return S_OK;- }
Did you try using <template> element instead of <html>? I'd expect it do do the right thing, but I didn't try.
- nsAString_InitDepend(&str, tag);
- nsres = nsIDOMHTMLElement_SetInnerHTML(nshtml, &str);
- nsAString_Finish(&str);
- if(NS_FAILED(nsres)) {
hres = map_nsresult(nsres);goto fail;- }
- /* Get the element and remove it from the temporary */
- if(!(p = heap_alloc((name_len + 1) * sizeof(WCHAR))))
hres = E_OUTOFMEMORY;- else {
memcpy(p, tag + 1, name_len * sizeof(WCHAR));p[name_len] = '\0';nsAString_InitDepend(&str, p);nsres = nsIDOMHTMLElement_GetElementsByTagName(nshtml, &str, &nscol);nsAString_Finish(&str);heap_free(p);if(NS_FAILED(nsres))goto fail;
That's making things more complicated that they need to be. You could just use firstElementChild or something similar.
Thanks,
Jacek