]> source.dussan.org Git - jquery.git/commitdiff
Core: drop the document.implementation.createHTMLDocument usage
authorMichał Gołębiowski <m.goleb@gmail.com>
Wed, 2 Mar 2016 11:28:00 +0000 (12:28 +0100)
committerMichał Gołębiowski <m.goleb@gmail.com>
Wed, 2 Mar 2016 11:34:06 +0000 (12:34 +0100)
The document.implementation.createHTMLDocument("") method creates inert
documents which is good but using it has introduced issues around anchor
elements href property not resolving according to the current document.
Because of that, this patch is getting backed out on 1.x/2.x branches.

(cherry-picked from c5c30735311c74c60689fcabdcf2cb192524000e)

Refs cfe468f29c4cbe1a457d0feb17dec90dcfd7c280
Refs gh-1505
Fixes gh-2941

src/core/parseHTML.js
src/core/support.js [deleted file]
test/unit/core.js
test/unit/support.js

index 55f67c43efdd32b3b42b0b54cde4b8aea2d454d1..327d6ef5c797c5387c2aabe5fa32fc2ba0526389 100644 (file)
@@ -2,11 +2,8 @@ define( [
        "../core",
        "../var/document",
        "./var/rsingleTag",
-       "../manipulation/buildFragment",
-
-       // This is the only module that needs core/support
-       "./support"
-], function( jQuery, document, rsingleTag, buildFragment, support ) {
+       "../manipulation/buildFragment"
+], function( jQuery, document, rsingleTag, buildFragment ) {
 
 // data: string of html
 // context (optional): If specified, the fragment will be created in this context,
@@ -20,12 +17,7 @@ jQuery.parseHTML = function( data, context, keepScripts ) {
                keepScripts = context;
                context = false;
        }
-
-       // document.implementation stops scripts or inline event handlers from
-       // being executed immediately
-       context = context || ( support.createHTMLDocument ?
-               document.implementation.createHTMLDocument( "" ) :
-               document );
+       context = context || document;
 
        var parsed = rsingleTag.exec( data ),
                scripts = !keepScripts && [];
diff --git a/src/core/support.js b/src/core/support.js
deleted file mode 100644 (file)
index 36d1971..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-define( [
-       "../var/document",
-       "../var/support"
-], function( document, support ) {
-
-// Support: Safari 8+
-// In Safari 8 documents created via document.implementation.createHTMLDocument
-// collapse sibling forms: the second one becomes a child of the first one.
-// Because of that, this security measure has to be disabled in Safari 8.
-// https://bugs.webkit.org/show_bug.cgi?id=137337
-support.createHTMLDocument = ( function() {
-       if ( !document.implementation.createHTMLDocument ) {
-               return false;
-       }
-       var doc = document.implementation.createHTMLDocument( "" );
-       doc.body.innerHTML = "<form></form><form></form>";
-       return doc.body.childNodes.length === 2;
-} )();
-
-return support;
-} );
index 81fbd4e54bfac64de321670bce6702db932da553..a0cf715cf30b0a4db937165302ec0647e3b4f677 100644 (file)
@@ -1541,22 +1541,6 @@ QUnit.test("jQuery.parseHTML", function( assert ) {
        assert.equal( jQuery.parseHTML( "<td><td>" )[ 1 ].parentNode.nodeType, 11, "parentNode should be documentFragment" );
 } );
 
-if ( jQuery.support.createHTMLDocument && !/opera.*version\/12\.1/i.test( navigator.userAgent ) ) {
-       QUnit.asyncTest( "jQuery.parseHTML", function( assert ) {
-               assert.expect( 1 );
-
-               Globals.register( "parseHTMLError" );
-
-               jQuery.globalEval( "parseHTMLError = false;" );
-               jQuery.parseHTML( "<img src=x onerror='parseHTMLError = true'>" );
-
-               window.setTimeout( function() {
-                       QUnit.start();
-                       assert.equal( window.parseHTMLError, false, "onerror eventhandler has not been called." );
-               }, 2000 );
-       } );
-}
-
 QUnit.test( "jQuery.parseJSON", function( assert ) {
        assert.expect( 20 );
 
index 49c32318d358400d71d934352db5aea46c66becd..46f48711522b292cc8e19849890283fa13e32a5f 100644 (file)
@@ -105,7 +105,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": version >= 13,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -146,7 +145,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -187,7 +185,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": false,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -228,7 +225,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": false,
                        "cors": false,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -269,7 +265,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": false,
-                       "createHTMLDocument": false,
                        "cssFloat": false,
                        "deleteExpando": false,
                        "enctype": true,
@@ -310,7 +305,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": false,
-                       "createHTMLDocument": false,
                        "cssFloat": false,
                        "deleteExpando": false,
                        "enctype": true,
@@ -351,7 +345,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": false,
-                       "createHTMLDocument": false,
                        "cssFloat": false,
                        "deleteExpando": false,
                        "enctype": true,
@@ -395,7 +388,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -436,7 +428,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -477,7 +468,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": false,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -518,7 +508,6 @@ testIframeWithCallback(
                        "checkOn": false,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -559,7 +548,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -600,7 +588,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -641,7 +628,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -682,7 +668,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": false,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -723,7 +708,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -764,7 +748,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -805,7 +788,6 @@ testIframeWithCallback(
                        "checkOn": false,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,
@@ -846,7 +828,6 @@ testIframeWithCallback(
                        "checkOn": false,
                        "clearCloneStyle": false,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "cssFloat": true,
                        "deleteExpando": true,
                        "enctype": true,