Core: Switch $.parseHTML from document.implementation to DOMParser

Using a document created via:
```js
document.implementation.createHTMLDocument( "" )
```
was needed in IE 9 which doesn't support `DOMParser#parseFromString` for
`text/html`. We can switch to:
```js
( new window.DOMParser() ) .parseFromString( "", "text/html" )
```
now, saving some bytes.

Closes gh-5572
This commit is contained in:
Michał Gołębiowski-Owczarek 2024-12-11 00:38:27 +01:00 committed by GitHub
parent 75b48e6a2b
commit 0e123509d5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,4 @@
import { jQuery } from "../core.js";
import { document } from "../var/document.js";
import { rsingleTag } from "./var/rsingleTag.js";
import { buildFragment } from "../manipulation/buildFragment.js";
import { isObviousHtml } from "./isObviousHtml.js";
@ -17,20 +16,14 @@ jQuery.parseHTML = function( data, context, keepScripts ) {
context = false;
}
var base, parsed, scripts;
var parsed, scripts;
if ( !context ) {
// Stop scripts or inline event handlers from being executed immediately
// by using document.implementation
context = document.implementation.createHTMLDocument( "" );
// Set the base href for the created document
// so any parsed elements with URLs
// are based on the document's URL (gh-2965)
base = context.createElement( "base" );
base.href = document.location.href;
context.head.appendChild( base );
// by using DOMParser
context = ( new window.DOMParser() )
.parseFromString( "", "text/html" );
}
parsed = rsingleTag.exec( data );