2013-02-28 139 views
4

我在Chrome瀏覽器中看到一個奇怪的行爲,使用window.name屬性。window.name在Chrome瀏覽器中不存在

例如:

  1. 打開一個標籤,然後轉到http://google.com

  2. 打開控制檯,然後鍵入window.name="hello"

  3. 現在在相同選項卡上,轉到http://chase.com

  4. 在控制檯中輸入window.name

我希望看到"hello"返回,而是我看到""

這是Google Chrome的一個已知問題嗎?它在FireFox中適用於我。

任何人都有這種行爲的任何見解?

謝謝!


更新:

如果,而不是一個新的URL輸入,I型window.location="http://chase.com",那麼window.name仍然存在!

+0

使用HTML5'localStorage'對象來存儲持久數據。 – howderek 2013-02-28 20:02:16

回答

-1

Chrome可能會根據網站開始一個新流程。

我會打電話什麼Chrome完全可以接受。

你真的不應該依賴於任何全局變量是持久的。我會考慮使用會話或本地存儲。

+3

我沒有投票,但這與進程沒有任何關係。 'window'上下文與頁面/文檔緊密相關,與線程/進程實現無關 - 否則可以使用「持久數據」的攻擊。真正的問題是,在FF中真正發生了什麼? – 2013-02-28 19:57:25

+0

我upvoted建議本地存儲。 – howderek 2013-02-28 20:00:23

2

window是每個文檔的全局對象,而不是瀏覽器窗口。在包含iframe的頁面中,例如,每個iframe都有一個window。每次加載文檔時,都會爲上下文創建並填充新的全局對象。當文檔被卸載時,全局對象及其所有數據都被銷燬。

+0

爲什麼上述步驟在firefox/safari中工作? – 2013-02-28 19:58:41

+1

@iight現在,*那*是真正的問題:D – 2013-02-28 20:04:27

+0

是啊哈哈......所以現在我只是想出了這可能是由於我在輸入新的URL。相反,如果我輸入'window.location =「http://chase.com」',那麼'window.name'仍然存在... – 2013-02-28 20:07:05

相關問題