Skip to main content

Bug Tracker

Side navigation

#5939 closed bug (invalid)

Opened January 26, 2010 11:03AM UTC

Closed February 05, 2010 11:04PM UTC

Cloning iframe with content generated by JS

Reported by: blackwolf Owned by:
Priority: major Milestone: 1.4.2
Component: core Version: 1.4.1
Keywords: iframe, clone Cc:
Blocked by: Blocking:
Description

When cloning element (clone() and inserting result with any posible method into the document) containing iframe with generated content (iframe has no src atribute and it’s content is generated by javascript), content of iframe’s body element is inserted into the old one, not new one.

So I end up with empty new iframe and old iframe with duplicated content.

If the cloning operation is performed again on newly created element, original content of original (first) iframe is inserted in it again, so it contains three same elements. It looks like jQuery copy iframe content correctly, but inserts it's content into wrong iframe (original one, not new one).

I tested it with jQuery 1.3.2 and 1.4.1 and on Firefox 3.5.7, IE 8.0.6001 and Opera 9.64 – behavior is the same.

Code to reproduce the bug:

$(function(){

var insertCode = $('<div class="test_code"><p>Some content</p> <iframe width="400" height="50"></iframe><p>some other content</p><a href="#">Clone</a></div>').appendTo('body');

$('iframe', insertCode).load(function(){

$('iframe', insertCode).contents().find('body').append('<strong>Test</strong> test test');

});

$('a', insertCode).click(function(){

$(this).closest('.test_code').clone(true).appendTo('body');

return false;

});

});

Attachments (0)
Change History (1)

Changed February 05, 2010 11:04PM UTC by john comment:1

resolution: → invalid
status: newclosed

That's because you're calling .load() on an iframe. .load() will grab the HTML and insert it in, I suspect that you may want to use a different method in that case.