comparison default/node_modules/jquery/src/core/parseHTML.js @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:1d038bc9b3d2
1 define( [
2 "../core",
3 "../var/document",
4 "./var/rsingleTag",
5 "../manipulation/buildFragment",
6
7 // This is the only module that needs core/support
8 "./support"
9 ], function( jQuery, document, rsingleTag, buildFragment, support ) {
10
11 "use strict";
12
13 // Argument "data" should be string of html
14 // context (optional): If specified, the fragment will be created in this context,
15 // defaults to document
16 // keepScripts (optional): If true, will include scripts passed in the html string
17 jQuery.parseHTML = function( data, context, keepScripts ) {
18 if ( typeof data !== "string" ) {
19 return [];
20 }
21 if ( typeof context === "boolean" ) {
22 keepScripts = context;
23 context = false;
24 }
25
26 var base, parsed, scripts;
27
28 if ( !context ) {
29
30 // Stop scripts or inline event handlers from being executed immediately
31 // by using document.implementation
32 if ( support.createHTMLDocument ) {
33 context = document.implementation.createHTMLDocument( "" );
34
35 // Set the base href for the created document
36 // so any parsed elements with URLs
37 // are based on the document's URL (gh-2965)
38 base = context.createElement( "base" );
39 base.href = document.location.href;
40 context.head.appendChild( base );
41 } else {
42 context = document;
43 }
44 }
45
46 parsed = rsingleTag.exec( data );
47 scripts = !keepScripts && [];
48
49 // Single tag
50 if ( parsed ) {
51 return [ context.createElement( parsed[ 1 ] ) ];
52 }
53
54 parsed = buildFragment( [ data ], context, scripts );
55
56 if ( scripts && scripts.length ) {
57 jQuery( scripts ).remove();
58 }
59
60 return jQuery.merge( [], parsed.childNodes );
61 };
62
63 return jQuery.parseHTML;
64
65 } );