Project

General

Profile

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
} );
(5-5/10)