tampermonkeyuserscriptsdomexceptiongreasemonkey-4htmldocumentclass

Greasemonkey throws "DOMException: The operation is insecure." on document.implementation.createHTMLDocument().open()


FF 84.0.2, GM 4.10.0

The code can be seen at GitLab. The relevant part is:

        ...
        const doc = document.implementation.createHTMLDocument('http://www.w3.org/1999/xhtml', 'html');
console.debug("DOC CREATED")
        doc.open() // <-- with GM: DOMException: The operation is insecure.
console.debug("DOC OPENED")
        ...

Console output:

...
DOC CREATED
DOMException: The operation is insecure.

Script works with Tampermonkey.


Solution

  • Got a solution from an answer to DOM parsing in JavaScript:

            ...
            const doc = document.implementation.createHTMLDocument('http://www.w3.org/1999/xhtml', 'html');
            doc.documentElement.innerHTML = page.responseText
            ...
    

    instead of:

            ...
            const doc = document.implementation.createHTMLDocument('http://www.w3.org/1999/xhtml', 'html');
            doc.open()
            doc.write( page.responseText )
            ...