Jquery Can';t从其父级替换iframe内部的div

Jquery Can';t从其父级替换iframe内部的div,jquery,html,iframe,Jquery,Html,Iframe,我有一个iframe,我是这样填写的: var usableUrl = unescape(url); var iframe = $("<iframe id='pageContentDownloader' name='pageContentDownloader' style='display:block'></iframe>"); $("body").append(iframe); iframe.load(usableUrl, null, ondocloaded); ifr

我有一个iframe,我是这样填写的:

var usableUrl = unescape(url);
var iframe = $("<iframe id='pageContentDownloader' name='pageContentDownloader' style='display:block'></iframe>");
$("body").append(iframe);
iframe.load(usableUrl, null, ondocloaded);
iframe.css({ "width": $(window).width(), "height": $(window).height(), "border": "0px" });
但由于某些原因,最后一个命令不起作用。我可以看到,
$(this)
是iframe中的原始段落(我可以看到它的内容,我知道它是该段落的原始未修改版本),而newPara肯定包含适当修改的内容

$(this).replaceWith()
似乎工作不正常。关于用中的文本元素替换标记的问题的注释不适用于此处,因为替换内容是用s填充的


这是一个奇怪的/Query 1.4+问题吗?我已经在HTML5、带有IE8的XHTML和Chrome5测试版上对此进行了测试。所有这些都给我留下了一个空的iframe。

您没有显示
newPara()
的功能,但是如果它创建了一个新的DOM元素,这可能是问题的根源:您正在隐式地将一个节点从一个文档移动到另一个文档。可能是iframe不喜欢这样做(虽然原则上应该有一条错误消息)

如果这是真的,则必须在iframe中创建DOM元素,或者插入原始HTML而不是完成的节点

您可以尝试使用
$(iframe.document.createElement(“p”)来创建元素


$(html)
有第二个参数。创建要替换的元素时,请尝试显式指定
$(iframe).document
作为所有者文档

newPara创建一个新的div节点(如$(“”)),然后在将原始节点替换为新节点之前向该节点附加各种跨距。为什么创建节点的上下文会对replaceWith命令产生任何影响?在这一点上,对象就是对象,对吗?@ANdrew节点上的跨文档操作是出了名的不稳定。请看,我在我的答案中添加了一些要尝试的内容。@Andrew好的。如果没有帮助,为了完整起见,我认为您应该在问题中添加
newPara()
的代码!
$("#pageContentDownloader").contents().find("p, div")
            .each(function () {
                var para = $(this).text();
                var words = para.split(" ");
                var aWords = new Array();
                $.makeArray(words, aWords);
                var newPara = makePara(aWords);
                $(this).replaceWith(newPara);
            });