2013-12-16 189 views
0

我目前有一個按鈕,它使用window.open("newpage.html")在新選項卡中打開一個新窗口...我在子窗口中使用childVar = window.opener.parentGlobalVar來檢索某些全局變量的值父窗口。現在我被要求在父窗口的同一個選項卡中打開新窗口,並且包含一個「返回」按鈕以返回到父窗口。打開與父窗口相同的窗口,從父項變量

到目前爲止,我努力做到這一點都沒有奏效,我已經使用_top_self作爲論據window.openwindow.locationlocation.href ......所有這一切都無法檢索所需的變量試圖父母;我假設在同一個標​​籤中打開新頁面時會清除這些值。有沒有一種方法可以存儲這些值(客戶端)或將它們傳遞到新窗口,如果它打開在同一個選項卡中?

+1

新窗口在同一個標​​籤? urm –

+0

這是一個有用的評論?授予我應該說'新的HTML頁面',而不是'新窗口'...但這沒有注意到這個無益的評論。 – JasonBK

+0

我想你真的不知道爲什麼評論是upvoted!當提拔它的人也有同樣的想法時,這也是有利的。說得通 ? –

回答

1

你可以使用localStorage的存儲數據的客戶端

localStorage.setItem("bar", foo); 
var x = localStorage.getItem("bar"); 

工作有點像餅乾,但也有風險。我建議你稍微研究一下,例如here

你基本上可以存儲所有東西,比如你的引用URL。

EDIT @comment:

清除整個存儲可以使用:

localStorage.clear(); 

和清除一定的鍵/值對:localStorage.removeItem(key) 在兼容性方面: caniuse.com是相當不錯。

+0

目前爲止,這似乎對我有用(在IE9,Chrome 31,FF 26中測試)......但我需要檢查一些舊瀏覽器,以及如何清除從我的URL存儲的項目而不是其他項目。 ...謝謝! – JasonBK

2

你不能那樣做。

一旦您的window(頁面)被卸載(當標籤導航到新頁面時),它不再存在。

相反,您可以在查詢字符串中傳遞數據。

+1

片段標識符可能更適合查詢字符串,因爲它不會被髮送到服務器 –

+0

我很欣賞這些想法,但是如果localStorage答案在下面的工作原理,那麼'你不能那樣做'真的如此?(至今爲止,對我來說,目前爲止) – JasonBK

+0

@JasonBK:我的意思是你不能直接訪問變量和執行上下文。無論是查詢字符串,片段,cookie還是本地存儲,您都可以將它們保存在別處。 – SLaks

0

可以嘗試window.close("newpage.html")方法..這會關閉「newpage.html」(後退按鈕)並返回到原始頁面(然後他們只需單擊他們用來打開「newpage.html」的鏈接,如果需要查看的頁面或返回到需要的標籤..
代碼將類似於:

<p>Click to close and return to last page.</p> 
<button onclick="myFunction()">close</button> 

<script> 

function myFunction() 
{ 
window.close("newpage.html"); 
} 
</script> 
+0

我不知道這將如何幫助將數據從父項傳遞給子頁面? – JasonBK

相關問題