2013-03-18 31 views
9

Tôi có nên sử dụng clear() để xóa tất cả mọi thứ trong localStorage hay tôi chỉ cần theo cách thủ công removeItem() những trang tôi đã đặt trên trang web cụ thể đó (đủ dễ dàng để theo dõi)?localStorage - clear() hoặc removeItem()?

Tôi hỏi vì tôi không muốn kết thúc xóa người dùng 'localStorage nếu họ có các giá trị khác được đặt. Tôi đang thử nghiệm điều này trong localhost và nhận thấy rằng bằng cách sử dụng clear(), mọi thứ tôi đã đặt trước đó trong các dự án khác đã bị xóa sổ.

EDIT: Tôi đã đề cập rằng tôi biết localStorage bị khóa miền. Tôi đang chạy một trang web theo cấu trúc này:

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

Trường hợp mỗi tệp sử dụng biến cục bộ riêng biệt của riêng nó. Nếu tôi localstorage.clear() bên trong cài đặt project2, project1 và project3 cũng sẽ bị mất.

+1

Không chắc chắn câu hỏi là gì ở đây. Bạn đang nói rằng bạn không thể sử dụng 'clear' vì vậy ... – user123444555621

Trả lời

10

localstorage được khóa cho một nguồn gốc. Vì vậy, nếu tất cả các dự án của bạn đang chạy trên localhost, thì bạn sẽ xóa tất cả các giá trị của mình khi bạn sử dụng clear() và phương thức an toàn duy nhất là xóa riêng lẻ.

Trong môi trường sản xuất, mỗi dự án phải có tên miền riêng và clear sẽ an toàn.

Vì vậy, đó là câu hỏi về việc biết những gì khác về nguồn gốc hiện tại. Nếu bạn kiểm soát tất cả mọi thứ trên nguồn gốc hiện tại và không nhớ lau tất cả, clear() là sự lựa chọn tốt nhất và được thiết kế cho mục đích đó. Nếu có các phần khác của mã của bạn sử dụng localstorage hoặc các dự án khác được lưu trữ trên cùng một nguồn thì bạn sẽ muốn chọn lọc hơn và sử dụng removeItem().

+0

Thật không may tôi không có một tên miền đơn lẻ cho mỗi một dự án của tôi - tôi chỉ đơn giản là không thể đủ khả năng đó. Tôi muốn giữ mọi thứ dưới trang web 'portfolio'-esque cá nhân của riêng tôi, với các thư mục con chứa mỗi dự án riêng biệt, khác nhau của tôi. Cảm ơn bạn mặc dù, trông giống như 'removeItem()' là con đường để đi! – Scott

+0

@Jaxo nếu bạn có một tên miền phụ khác cho mỗi dự án 'clear()' sẽ vẫn hoạt động – Markasoftware

5

clear() xóa mọi thứ về nguồn gốc hiện tại (https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript). Sử dụng clear() trên example.com sẽ không ảnh hưởng đến localStorage cho example2.com. Đó là xóa dữ liệu cho tất cả các dự án trên máy tính của bạn vì tất cả các tệp thử nghiệm mà bạn có trên cùng một nguồn gốc (http://localhost hoặc file:///C:\). Do đó, bạn có thể sử dụng clear()