使用jQuery从原始页面内容创建iframe

时间:2012-09-14 15:54:54

标签: javascript jquery html iframe

我正在尝试将整个页面动态“重写”为一组iframe。我想要一个底部iframe的音乐播放器栏和原始页面“重写”在iframe之上/之后。几乎就像SMC player一样。我觉得我很接近,但我是一个jQuery新手..所以任何指针都会事先得到很高兴。

以下是创建无效工作的iframe的主要部分。

var oldpage =  "<html>" + $("html").html() + "</html>";
$('body').html( "<iframe frameborder='0' id='content' allowtransparency='true' name='content'></iframe>" );
$('#content').contents().find('html').html(oldpage);
$('body').append("<iframe id='stratus' allowtransparency='true' frameborder='0' scrolling='0'>");

我正在尝试在第1行加载整个原始html。然后创建iframe并尝试将oldbody变量注入新的iframe #content。 iframe已创建,但#content iframe有一个空白正文。

1 个答案:

答案 0 :(得分:1)

我不知道为什么,但你不能替换整个HTML元素,只能替换它的内容:

// create raw frame
var frame = $('<iframe id="maincontent" style="position:absolute; top: 0; left: 0; width: 50%; height: 50%;"><html></html></iframe>');

// store a copy of current document contents
var copiedHead = $('head').clone();
var copiedBody = $('body').clone();

// empty the current document
$(':not(iframe) body *').remove();

// load the copy into the frame;
// it's not possible to replace the whole HTML element;
// using plain JS DOM function here, since jQuery would strip out any SCRIPT and STYLE tags
frame.load(function(){
    $(this).contents().find('html')[0].replaceChild(copiedHead[0] , $(this).contents().find('head')[0]);
    $(this).contents().find('html')[0].replaceChild(copiedBody[0] , $(this).contents().find('body')[0]);
}).appendTo('body');