mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Core: drop the document.implementation.createHTMLDocument usage
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 cfe468f29c
Refs gh-1505
Fixes gh-2941
This commit is contained in:
parent
5d620be420
commit
c5c3073531
@ -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 && [];
|
||||
|
@ -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;
|
||||
} );
|
@ -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 );
|
||||
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user