Skip to content

Commit dec2804

Browse files
gibson042dmethvin
authored andcommitted
Fix #11359: preserve contents for cloned scripts
1 parent f365683 commit dec2804

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

src/manipulation.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,10 @@ function cloneFixAttributes( src, dest ) {
456456
// cloning other types of input fields
457457
} else if ( nodeName === "input" || nodeName === "textarea" ) {
458458
dest.defaultValue = src.defaultValue;
459+
460+
// IE blanks contents when cloning scripts
461+
} else if ( nodeName === "script" && dest.text !== src.text ) {
462+
dest.text = src.text;
459463
}
460464

461465
// Event data gets referenced instead of copied if the expando

test/unit/manipulation.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1169,6 +1169,15 @@ test("clone()", function() {
11691169
equal( jQuery("body").clone().children()[0].id, "qunit-header", "Make sure cloning body works" );
11701170
});
11711171

1172+
test("clone(script type=non-javascript) (#11359)", function() {
1173+
expect(3);
1174+
var src = jQuery("<script type='text/filler'>Lorem ipsum dolor sit amet</script><q><script type='text/filler'>consectetur adipiscing elit</script></q>");
1175+
var dest = src.clone();
1176+
equal( dest[0].text, "Lorem ipsum dolor sit amet", "Cloning preserves script text" );
1177+
equal( dest.last().html(), src.last().html(), "Cloning preserves nested script text" );
1178+
ok( /^\s*<scr.pt\s+type=['"]?text\/filler['"]?\s*>consectetur adipiscing elit<\/scr.pt>\s*$/i.test( dest.last().html() ), "Cloning preserves nested script text" );
1179+
});
1180+
11721181
test("clone(form element) (Bug #3879, #6655)", function() {
11731182
expect(5);
11741183
var element = jQuery("<select><option>Foo</option><option selected>Bar</option></select>");

0 commit comments

Comments
 (0)