2010-08-05 153 views
1

我有一个iframe,其中有一个报告。我还拥有的一个功能是允许用户使用window.open()调用在iframe中分离报告并在其自己的窗口中打开报告。Window.open重新加载窗口

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

反正有没有在分离的窗口中重新运行报告或以某种方式获取缓存版本?

谢谢。

回答

2

如果客户端已经有了HTML,那么您可以将其写入到弹出窗口中,而无需转到服务器。

var w = window.open(); 
    w.document.write("Text in new Window"); 

这将打开一个窗口并写入一些文本。您现在需要做的就是从iframe中获取内容并将其写入新窗口。 Bingo :)

顺便说一下IMO:在浏览器中打开新窗口应尽可能避免,因为许多浏览器会阻止它,大多数自动化UI测试工具不支持它。

EDIT(响应于评论):

下面是读取和写入到使用jQuery JavaScript库的iFrame的示例。

// Write to 
    $("iframe").contents().find("body").html("Test Html") 

    // Read from 
    alert($("iframe").contents().find("body").html()); 

这基本上找到文档中的iframe元素,并读取和写入内容给他们。如果你不使用JavaScript库,我强烈推荐学习并使用其中的一个。

BTW:我对弹出窗口的建议也适用于iframe。你应该尽可能避免使用它们。

+0

谢谢tarn - 只是想知道如果你能提供一些关于如何从我的iframe中获取内容的建议吗? – tonyf 2010-08-05 06:08:54

+0

已更新的答案,请接受并投票赞成,如果有帮助:) – tarn 2010-08-05 06:28:31

+0

谢谢tarn - 如果没有问题,我们会试用您的解决方案并回复给您。 – tonyf 2010-08-05 14:30:07

相关问题