2010-08-05 155 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

相關問題