我有一个iframe,里面有一个报告。我还有一个功能,允许用户使用window.open()调用在iframe中分离报表并在其自己的窗口中打开它。
我的问题是,当我按下分离按钮时,最初在iframe中加载的整个报告实际上会再次运行再次运行查询的动作,因此会向用户显示白色屏幕,直到报告最终呈现试。
无论如何不在分离窗口中重新运行报告或以某种方式获取缓存版本?
感谢。
答案 0 :(得分:2)
如果您已在客户端使用HTML,则无需转到服务器即可将其写入弹出窗口。
var w = window.open();
w.document.write("Text in new Window");
这会打开一个窗口并写一些文字。您现在需要做的就是从iframe获取内容并将其写入新窗口。宾果:)
BTW IMO:应尽可能避免在浏览器中打开新窗口,因为许多浏览器会阻止它,大多数自动化UI测试工具都不支持它。
编辑(回应评论):
以下是使用jQuery JavaScript库读取和写入iFrame的示例。
// Write to
$("iframe").contents().find("body").html("Test Html")
// Read from
alert($("iframe").contents().find("body").html());
这基本上可以在文档中查找iframe元素并读取和写入内容。如果您不使用JavaScript库,我强烈建议您学习并使用其中一个。
顺便说一句:我对弹出窗口的建议也适用于iframe。你应该尽可能避免使用它们。