如何仅使用javascript等待iframe内容加载

如何仅使用javascript等待iframe内容加载,javascript,iframe,Javascript,Iframe,我正在尝试为一个网站创建一个打印功能,动态地将网页加载到弹出窗口中。整个情况有点奇怪,所以我会解释我到底在做什么,如果有人对我如何以更有效的方式完成这个过程有任何建议,我洗耳恭听 因为我有多个需要一起打印的网页,并且我无法控制将提供什么内容,所以我决定最好在iFrame中加载所有内容(主要是因为许多文档包含脚本和样式,如果简单地一起放到一个页面上,会污染其他文档……) 因为iframe是不灵活的,所以我找到了确定iframe需要多大尺寸的唯一方法,我必须单独渲染每个web文档并记录高度,然后以我

我正在尝试为一个网站创建一个打印功能,动态地将网页加载到弹出窗口中。整个情况有点奇怪,所以我会解释我到底在做什么,如果有人对我如何以更有效的方式完成这个过程有任何建议,我洗耳恭听

因为我有多个需要一起打印的网页,并且我无法控制将提供什么内容,所以我决定最好在iFrame中加载所有内容(主要是因为许多文档包含脚本和样式,如果简单地一起放到一个页面上,会污染其他文档……)

因为iframe是不灵活的,所以我找到了确定iframe需要多大尺寸的唯一方法,我必须单独渲染每个web文档并记录高度,然后以我最初记录的高度在iframe中渲染每个文档

到目前为止,我已经准备好在单个页面上呈现每个iframe,并且正在使用以下代码创建一个新的iframe元素

var body = popWindow.document.createElement("body");
var iframe = popWindow.document.createElement("iframe");

iframe.contentDocument.open();
iframe.contentDocument.write(data);
iframe.contentDocument.close();
问题发生在我击中时

iframe.contentDocument.open();

iframe已实例化,但contentDocument似乎为空。我曾尝试等待加载此内容,但它只是无限地静止和循环。

您可以使用jQuery等待加载帧,然后它们完成您的工作

$("#your-frame").load(function () {
    //frames["your-frame"]
});
编辑:仅使用javascript

var yourFrame = document.getElementById('your-frame'); 
    yourFrame.addEventListener("load", function() { 
});

您可以使用jQuery等待帧加载,然后由它们完成您的工作

$("#your-frame").load(function () {
    //frames["your-frame"]
});
编辑:仅使用javascript

var yourFrame = document.getElementById('your-frame'); 
    yourFrame.addEventListener("load", function() { 
});

您只需将事件侦听器附加到iframe的窗口:

iframe.window.addEventListener('load', function(){ ...

您只需将事件侦听器附加到iframe的窗口:

iframe.window.addEventListener('load', function(){ ...

浏览器的XSS过滤器是否可以介入?(检查控制台)我不知道它怎么可能,弹出窗口是脚本正在执行的页面的子窗口。我写的所有数据都来自js。浏览器的XSS过滤器会介入吗?(检查控制台)我不知道它怎么可能,弹出窗口是脚本正在执行的页面的子窗口。我写的所有数据也都来自js。我需要一个纯js的答案。不幸的是,jquery不是一个选项。这应该可以工作
var yourFrame=document.getElementById('your-frame');addEventListener(“load”,function(){})var yourFrame=document.getElementById('your-frame');addEventListener(“load”,function(){})窗口是未定义的,可能是因为还没有加载?等待iframe本身加载没有任何作用。有一个问题,您是否将iframe附加到dom?如果我尝试这样做,窗口是未定义的,可能是因为它尚未加载?等待iframe本身被加载并没有任何作用。一个问题,您是否将iframe附加到dom?