Skip to content
Permalink
Browse files

Manipulation: Properly detect HTML elements with single-character names

Fixes gh-4124
Closes gh-4125
  • Loading branch information...
gibson042 committed Jul 13, 2018
1 parent cc95204 commit 979809c5a80aaf26bf7e3406a2e361e809f9b132
Showing with 21 additions and 2 deletions.
  1. +2 −1 src/core/var/rsingleTag.js
  2. +4 −1 src/manipulation/var/rtagName.js
  3. +15 −0 test/unit/manipulation.js
@@ -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 );
} );
@@ -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 );
} );
@@ -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" );

0 comments on commit 979809c

Please sign in to comment.
You can’t perform that action at this time.