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.
This commit is contained in:
Michał Gołębiowski-Owczarek 2024-10-20 23:49:26 +02:00
parent d92810614b
commit a881b2c5fd
No known key found for this signature in database

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 );