使用javascript将整个文档复制到iframe中
这听起来有点不靠谱,但这正是我试图用javascript做的(这都是由事件处理程序触发的):使用javascript将整个文档复制到iframe中,javascript,html,iframe,Javascript,Html,Iframe,这听起来有点不靠谱,但这正是我试图用javascript做的(这都是由事件处理程序触发的): 将页面内容(最好是整个文档或至少documentElement对象)保存到变量中 创建iframe并将其插入到 身体 将iframe的文档替换为已保存的文档(以便iframe现在具有与外部页面相同的内容) 更改外部页面 除了关于替换iframe文档的部分外,一切都很好。我尝试了很多不同的方法,但都有问题(它们概述如下)。我需要事件处理程序、样式、链接等,当页面在iframe中时,它们都能正常工作 是的,
我已经尝试过的事情: 我收到一条错误消息(“设置只有getter的属性”) 这似乎可行,但不会重新呈现样式,事件处理程序也不起作用。有趣的是,链接也不起作用,它们甚至没有使用浏览器的默认样式。也许这是因为DOCTYPE没有复制到iframe
iframe.contentWindow.document.documentElement.innerHTML = document.documentElement.innerHTML;
这与removeChild/appendChild方法具有相同的行为
如果我能让浏览器重新呈现样式并重新注册事件处理程序,那我就很幸运了,但我不确定这是否可行。关于最后一种方法,也许你复制的窗口的DOM还没有加载 至于Doctype,您可以从头开始重建它,并使用document.write将其插入html节点之前
doctype可以通过document.doctype访问,但它只有一个getter。如果在iframe中加载一个空的html样板文档,会怎么样?
var html = iframe.contentWindow.document.importNode(document.documentElement, true);
var idoc = iframe.contentWindow.document;
while(idoc.firstChild) idoc.removeChild(idoc.firstChild); // remove all children (firefox automatically creates an html element for iframes with no src)
idoc.appendChild(html); // insert a new documentElement
在某个文件夹“myFolder/sparePage.html”中创建一个文档,然后执行以下操作
var myIframe=document.createElement(“iframe”);
myIframe.style.display=“无”;
document.body.appendChild(myIframe);
函数myIframeLdd(){
log(“myIframe已加载”);
//..您的iframe就绪代码在这里
myIframe.removeEventListener(“加载”,myiframeld,false);
}
addEventListener(“加载”,myiframeld,false);
myIframe.src=“myFolder/sparePage.html”
我在Prototype的“dom:loaded”事件触发时创建iframe,并在“click”事件中复制文档。不过,我将尝试doctype,看看它是否有效。我正在尝试放入doctype,但在使用document.write with document.appendChild时遇到问题。我试着把document.close()放得到处都是,但似乎什么都不起作用。在我看来,doctype不会使用appendChild添加,因为doctype本身是一个注释而不是一个节点,但我可能在这方面错了。我将从另一个框架的doctype以字符串形式构建document.type。然后我将使用document.write以..document.write(docTypevariable++…documentElement.innerHTML+)的形式进行复制
iframe.contentWindow.document.documentElement.innerHTML = document.documentElement.innerHTML;