Manipulation: Properly detect HTML elements with single-character names

Fixes gh-4124
Closes gh-4125
This commit is contained in:
Richard Gibson 2018-07-13 00:35:08 -04:00 committed by GitHub
parent cc95204589
commit 979809c5a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 2 deletions

View File

@ -1,6 +1,7 @@
define( function() {
"use strict";
// Match a standalone tag
// rsingleTag matches a string consisting of a single HTML element with no attributes
// and captures the element's name
return ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
} );

View File

@ -1,5 +1,8 @@
define( function() {
"use strict";
return ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
// rtagName captures the name from the first start tag in a string of HTML
// https://html.spec.whatwg.org/multipage/syntax.html#tag-open-state
// https://html.spec.whatwg.org/multipage/syntax.html#tag-name-state
return ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
} );

View File

@ -2772,6 +2772,21 @@ QUnit.test( "Make sure tr is not appended to the wrong tbody (gh-3439)", functio
assert.strictEqual( htmlOut, htmlExpected );
} );
QUnit.test( "Make sure tags with single-character names are found (gh-4124)", function( assert ) {
assert.expect( 1 );
var htmlOut,
htmlIn = "<p>foo<!--<td>--></p>",
$el = jQuery( "<div/>" );
$el.html( htmlIn );
// Lowercase and replace spaces to remove possible browser inconsistencies
htmlOut = $el[ 0 ].innerHTML.toLowerCase().replace( /\s/g, "" );
assert.strictEqual( htmlOut, htmlIn );
} );
QUnit.test( "Insert script with data-URI (gh-1887)", 1, function( assert ) {
Globals.register( "testFoo" );
Globals.register( "testSrcFoo" );