2013-03-18 39 views
9

我是否應該使用clear()來清除localStorage中的所有內容,或者是否應該手動將removeItem()設置在特定網站上(這很容易追蹤)?localStorage - clear()或removeItem()?

我問,因爲我不想最終抹去用戶的localStorage如果他們有其他值設置。我在localhost測試了這個,注意到通過使用clear(),我以前在其他項目中設置的所有內容都被清除了。

編輯:我應該提到我知道localStorage是域鎖定的。我正在運行一個遵循以下結構的站點:

public-html 
(localStorage) 
--project1 
----files 
--project2 
----files 
--project3 
----files 

其中每個文件都使用它自己單獨的localStorage變量。如果我在project2內部localstorage.clear(),project1和project3的設置也會丟失。

+1

不知道這裏的問題是什麼。你說你不能使用'clear'所以... – user123444555621 2013-03-18 22:05:48

回答

10

localstorage被鍵入到原點。因此,如果您的所有項目都在本地主機上運行,​​那麼當您使用clear()時,您將清除所有值,唯一安全的方法是單個刪除。

在生產環境中,每個項目都應該有自己的域,並且應該是安全的。

所以這是一個知道當前原點還有什麼的問題。如果您控制當前原點的所有內容,並且不介意全部清除,clear()是最佳選擇,並且是爲此設計的。如果您的代碼的其他部分使用localstorage或其他項目託管在同一個源,那麼您將希望更具選擇性並使用removeItem()

+0

不幸的是,我沒有一個孤立的領域,我的每一個項目 - 我根本承受不起。我希望將所有內容都放在我自己的個人「投資組合」網站中,其中的子文件夾包含我的每個單獨的不同項目。謝謝,看起來像'removeItem()'是要走的路! – Scott 2013-03-18 20:58:09

+0

@Jaxo如果每個項目都有不同的子域'clear()'仍然可以工作 – Markasoftware 2013-03-19 23:28:08