From cfe468f29c4cbe1a457d0feb17dec90dcfd7c280 Mon Sep 17 00:00:00 2001 From: Timmy Willison Date: Wed, 10 Dec 2014 09:48:55 -0500 Subject: Core: re-introduce createHTMLDocument in parseHTML; Safari 8 left out Close gh-1505 --- src/core/parseHTML.js | 14 +++++++++++--- src/core/support.js | 12 ++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 src/core/support.js (limited to 'src/core') diff --git a/src/core/parseHTML.js b/src/core/parseHTML.js index e0348971d..2b638e633 100644 --- a/src/core/parseHTML.js +++ b/src/core/parseHTML.js @@ -2,8 +2,12 @@ define([ "../core", "./var/rsingleTag", - "../manipulation" // buildFragment -], function( jQuery, rsingleTag ) { + // This is the only module that needs core/support + "./support", + + // buildFragment + "../manipulation" +], function( jQuery, rsingleTag, support ) { // data: string of html // context (optional): If specified, the fragment will be created in this context, @@ -17,7 +21,11 @@ jQuery.parseHTML = function( data, context, keepScripts ) { keepScripts = context; context = false; } - context = context || document; + // document.implementation stops scripts or inline event handlers from + // being executed immediately + context = context || ( support.createHTMLDocument ? + document.implementation.createHTMLDocument( "" ) : + document ); var parsed = rsingleTag.exec( data ), scripts = !keepScripts && []; diff --git a/src/core/support.js b/src/core/support.js new file mode 100644 index 000000000..ebed460ae --- /dev/null +++ b/src/core/support.js @@ -0,0 +1,12 @@ +define([ + "../var/support" +], function( support ) { + +support.createHTMLDocument = (function() { + var doc = document.implementation.createHTMLDocument( "" ); + doc.body.innerHTML = "
"; + return doc.body.childNodes.length === 2; +})(); + +return support; +}); -- cgit v1.2.3