]> source.dussan.org Git - jquery.git/commitdiff
Core: drop the document.implementation.createHTMLDocument usage 2972/head
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:28:00 +0000 (12:28 +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.

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 87c2147d14a53dda2c10c34f0246a62e2f07972f..3524abd6325587b9d7dd1f3600ca7181a6644901 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 ) {
 
 // Argument "data" should be 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;
        }
-
-       // Stop scripts or inline event handlers from being executed immediately
-       // by using document.implementation
-       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 0609a70..0000000
+++ /dev/null
@@ -1,18 +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() {
-       var body = document.implementation.createHTMLDocument( "" ).body;
-       body.innerHTML = "<form></form><form></form>";
-       return body.childNodes.length === 2;
-} )();
-
-return support;
-} );
index a9e93989c548b3f28696bf6c057de5591301d249..accdae8e1d33bde3c1c214a9cd8077e9373d7d5f 100644 (file)
@@ -1491,22 +1491,6 @@ QUnit.test("jQuery.parseHTML", function( assert ) {
        assert.ok( jQuery.parseHTML("<#if><tr><p>This is a test.</p></tr><#/if>") || true, "Garbage input should not cause error" );
 });
 
-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 5d3e38a4b77ea3e09f92fcb0e3560d17212e73ae..af2bd9238941ea5e16c35e7e40faa2a532a997d0 100644 (file)
@@ -65,7 +65,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": version >= 13,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": true,
@@ -84,7 +83,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": true,
@@ -103,7 +101,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": false,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "focusin": true,
                        "noCloneChecked": false,
                        "optDisabled": true,
@@ -122,7 +119,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": false,
                        "cors": false,
-                       "createHTMLDocument": true,
                        "focusin": true,
                        "noCloneChecked": false,
                        "optDisabled": true,
@@ -144,7 +140,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": true,
@@ -163,7 +158,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": true,
@@ -182,7 +176,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": false,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": true,
@@ -201,7 +194,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": true,
@@ -220,7 +212,6 @@ testIframeWithCallback(
                        "checkOn": false,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": true,
@@ -239,7 +230,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": true,
@@ -258,7 +248,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": true,
@@ -277,7 +266,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": false,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": true,
@@ -296,7 +284,6 @@ testIframeWithCallback(
                        "checkOn": true,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": true,
@@ -315,7 +302,6 @@ testIframeWithCallback(
                        "checkOn": false,
                        "clearCloneStyle": true,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": true,
@@ -334,7 +320,6 @@ testIframeWithCallback(
                        "checkOn": false,
                        "clearCloneStyle": false,
                        "cors": true,
-                       "createHTMLDocument": true,
                        "focusin": false,
                        "noCloneChecked": true,
                        "optDisabled": false,