Window.open重新加载窗口

时间:2010-08-05 05:28:14

标签: javascript jquery html

我有一个iframe,里面有一个报告。我还有一个功能,允许用户使用window.open()调用在iframe中分离报表并在其自己的窗口中打开它。

我的问题是,当我按下分离按钮时,最初在iframe中加载的整个报告实际上会再次运行再次运行查询的动作,因此会向用户显示白色屏幕,直到报告最终呈现试。

无论如何不在分离窗口中重新运行报告或以某种方式获取缓存版本?

感谢。

1 个答案:

答案 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。你应该尽可能避免使用它们。