Skip to content

Commit e50c8ce

Browse files
author
yan
committed
Manipulation: subtle change to innerHTML replacement
1 parent a2092d8 commit e50c8ce

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/manipulation.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,8 @@ jQuery.fn.extend({
563563

564564
html: function( value ) {
565565
return access( this, function( value ) {
566-
var elem = this[ 0 ] || {},
566+
var oldValue,
567+
elem = this[ 0 ] || {},
567568
i = 0,
568569
l = this.length;
569570

@@ -574,19 +575,21 @@ jQuery.fn.extend({
574575
}
575576

576577
// See if we can take a shortcut and just use innerHTML
577-
if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
578+
oldValue = value;
579+
value = typeof value === "string" && !rnoInnerhtml.test( value ) &&
578580
( support.htmlSerialize || !rnoshimcache.test( value ) ) &&
579581
( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
580-
!wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) {
581-
582-
value = value.replace( rxhtmlTag, "<$1></$2>" );
582+
!wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] &&
583+
value.replace( rxhtmlTag, "<$1></$2>" );
583584

585+
if (value) {
584586
try {
585587
for (; i < l; i++ ) {
586588
// Remove element nodes and prevent memory leaks
587589
elem = this[i] || {};
588590
if ( elem.nodeType === 1 ) {
589591
jQuery.cleanData( getAll( elem, false ) );
592+
// Sets innerHTML to "true" when processed by uglify-js@2.4.23
590593
elem.innerHTML = value;
591594
}
592595
}
@@ -595,10 +598,10 @@ jQuery.fn.extend({
595598

596599
// If using innerHTML throws an exception, use the fallback method
597600
} catch(e) {}
598-
}
601+
}
599602

600603
if ( elem ) {
601-
this.empty().append( value );
604+
this.empty().append( oldValue );
602605
}
603606
}, null, value, arguments.length );
604607
},

0 commit comments

Comments
 (0)