2012-10-12 78 views
0

我有一個需求,我需要創建一個鏈接來在新窗口中打開表單,然後當我單擊相同的鏈接時,它將重新集中在現有的窗口上。如何保持javascript window.open變量引用

這與下面的代碼

<input type="button" value="Click" onclick = "return OpenWindow();"/> 

<script> 
var win = null; 
function OpenWindow() 
{ 
    if (win == null || win.closed) 
    { 
     win = window.open('http://localhost/Conditions.aspx', 'Condition'); 
    } 
    win.focus(); 
    return false; 
} 
</script> 

但是效果很好,我經歷了一個問題,當我切換到不同的頁面,然後回來到具有鏈接的網頁。變量win將不保留先前的參考。 如果我再次點擊鏈接,它會刷新現有的窗口(這不是我想要的!),然後專注於它。

有沒有什麼辦法可以保持變量的引用?還是有人知道如何解決這個問題?

+0

你有控制子窗口嗎? – Ibu

+0

是的,我願意。子窗口是用戶可以將主頁面導航到其他任何地方的獨立窗口。 –

回答

2

我有同樣的問題和Window.open only if the window is not open

就解決了。如果你基本上要在窗口集中,而不是鏈接被點擊的時候,即使父窗口已經關閉,重新打開,或更改刷新,這將會訣竅。

我正打算使用cookies。

+0

謝謝,這是我打算做的。 –

2

Chia,你的問題是,JS不會在頁面間持續存在。 HTML是無狀態的,因此在移動到第2頁和第3頁之後,位於頂部的JS也需要「忘記」它在頁面1上做了什麼。

有些方法可以存儲字符串和數字,並在其他頁面上檢索它們,但這不是您要查找的內容。

並且爲此目的,您目前的設置沒有什麼可以真正做到的。

允許您保留子引用的方法有多種(在主頁面中執行iFrame內的主頁導航...如果您確實必須...或頁面中的AJAX更改,對於具有功能強大的瀏覽器的人,以及使用舊式導航瀏覽器的JS引擎較差)。

但是你不可能打開window2,點擊第3頁的指向window1的鏈接,並且仍然有page3對window2的引用。