diff options
Diffstat (limited to 'js/vendor/jquery/src/core/parseHTML.js')
-rw-r--r-- | js/vendor/jquery/src/core/parseHTML.js | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/js/vendor/jquery/src/core/parseHTML.js b/js/vendor/jquery/src/core/parseHTML.js index 64cf2a18a..87c2147d1 100644 --- a/js/vendor/jquery/src/core/parseHTML.js +++ b/js/vendor/jquery/src/core/parseHTML.js @@ -1,11 +1,16 @@ -define([ +define( [ "../core", + "../var/document", "./var/rsingleTag", - "../manipulation" // buildFragment -], function( jQuery, rsingleTag ) { + "../manipulation/buildFragment", -// data: string of html -// context (optional): If specified, the fragment will be created in this context, defaults to document + // This is the only module that needs core/support + "./support" +], function( jQuery, document, rsingleTag, buildFragment, support ) { + +// Argument "data" should be string of html +// context (optional): If specified, the fragment will be created in this context, +// defaults to document // keepScripts (optional): If true, will include scripts passed in the html string jQuery.parseHTML = function( data, context, keepScripts ) { if ( !data || typeof data !== "string" ) { @@ -15,17 +20,22 @@ jQuery.parseHTML = function( data, context, keepScripts ) { keepScripts = context; context = false; } - context = context || document; + + // Stop scripts or inline event handlers from being executed immediately + // by using document.implementation + context = context || ( support.createHTMLDocument ? + document.implementation.createHTMLDocument( "" ) : + document ); var parsed = rsingleTag.exec( data ), scripts = !keepScripts && []; // Single tag if ( parsed ) { - return [ context.createElement( parsed[1] ) ]; + return [ context.createElement( parsed[ 1 ] ) ]; } - parsed = jQuery.buildFragment( [ data ], context, scripts ); + parsed = buildFragment( [ data ], context, scripts ); if ( scripts && scripts.length ) { jQuery( scripts ).remove(); @@ -36,4 +46,4 @@ jQuery.parseHTML = function( data, context, keepScripts ) { return jQuery.parseHTML; -}); +} ); |