Tôi cần xóa cookie của khách hàng có cùng tên nhưng với các đường dẫn khác nhau. Cách tốt nhất để làm điều này trong javascript là gì.Xóa cookie có cùng tên nhưng các đường dẫn khác nhau
Trả lời
Chỉ cần chỉ định cùng một đường dẫn của cookie mà bạn muốn xóa, cho nó hết hạn trong quá khứ.
document.cookie = 'name=value1; path=/';
document.cookie = 'name=value2; path=/path/';
alert(document.cookie); // name=value1; name=value2
document.cookie = 'name=; path=/path/; expires=' + new Date(0).toUTCString();
alert(document.cookie); // name=value1
Thay đổi nó hết hạn cookie với một con đường /
sẽ vẫn chỉ hết hạn một trong những cookie - con đường cho có để phù hợp với con đường thiết lập:
document.cookie = 'name=; path=/; expires=' + new Date(0).toUTCString();
alert(document.cookie); // name=value2
Để loại bỏ cả hai, bạn sẽ phải hết hạn mỗi đường dẫn của mình:
document.cookie = 'name=; path=/; expires=' + new Date(0).toUTCString();
document.cookie = 'name=; path=/path/; expires=' + new Date(0).toUTCString();
alert(document.cookie); // {blank}
Bây giờ, các ví dụ này giả sử bạn đang duyệt /path/
hoặc thư mục con của nó.
[sửa]
Để loại bỏ với số lượng lớn, hãy thử một cái gì đó như thế này:
function expireAllCookies(name, paths) {
var expires = new Date(0).toUTCString();
// expire null-path cookies as well
document.cookie = name + '=; expires=' + expires;
for (var i = 0, l = paths.length; i < l; i++) {
document.cookie = name + '=; path=' + paths[i] + '; expires=' + expires;
}
}
expireAllCookies('name', ['/', '/path/']);
Demo: http://jsfiddle.net/M2dZ3/
Bạn cũng có thể giả tra cứu đường đi bằng cách tách và lặp window.location.pathname
:
function expireActiveCookies(name) {
var pathname = location.pathname.replace(/\/$/, ''),
segments = pathname.split('/'),
paths = [];
for (var i = 0, l = segments.length, path; i < l; i++) {
path = segments.slice(0, i + 1).join('/');
paths.push(path); // as file
paths.push(path + '/'); // as directory
}
expireAllCookies(name, paths);
}
Bản trình diễn: http://jsfiddle.net/M2dZ3/2/
Bạn có thể đặt một cookie với các thông số tương tự nhưng một ngày trong quá khứ:
document.cookie =
'ppkcookie2=another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'
Xem một số thông tin có giá trị on quirksmode
[EDIT] Để xóa các cookie có cùng tên, bạn có thể thử:
function delete_cookie (cookie_name)
{
var cookie_date = new Date (); // current date & time
cookie_date.setTime (cookie_date.getTime() - 1);
document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}
- 1. JAXB @XmlElements, các loại khác nhau nhưng cùng tên?
- 2. Tại sao các tiêu đề khác nhau có cùng tên?
- 3. NHibernate DuplicateMappingException khi hai lớp có cùng tên nhưng không gian tên khác nhau
- 4. Eclipse: Nhiều dự án có cùng tên nhưng có một vị trí khác nhau
- 5. Đường dẫn cookie jQuery
- 6. Xóa đường dẫn khỏi tên tệp
- 7. PHP: xóa tên tệp khỏi đường dẫn
- 8. C++: lớp khác nhau có cùng tên trong các đơn vị dịch khác nhau
- 9. Có thể có cùng một hợp đồng, cùng một ràng buộc, cùng một địa chỉ, nhưng các cổng khác nhau?
- 10. Vận tốc, các đường dẫn mẫu khác nhau
- 11. Đường ray: has_many, nhưng cũng có một tên khác
- 12. Có hai phiên khác nhau trong cùng một tên miền
- 13. Bắt đặt cookie trên các tên miền khác nhau, với javascript hoặc khác
- 14. Rails: chuyển hướng đến đường dẫn hiện tại nhưng tên miền phụ khác
- 15. Có cách nào để sử dụng thuộc tính có cùng tên nhưng có loại khác trong lớp dẫn xuất không?
- 16. Có thể nhận đường dẫn cookie được lưu trữ không?
- 17. nhiều chức năng có cùng tên nhưng các loại đối số khác nhau như tham số mẫu
- 18. Internet Explorer gửi sai cookie khi đường dẫn chồng lên nhau
- 19. JSESSIONID va chạm giữa hai máy chủ trên cùng một ip nhưng cổng khác nhau
- 20. So sánh các đường dẫn thực hiện của cùng một mã trong các đầu vào khác nhau
- 21. Các biến trong các trường hợp chuyển đổi khác nhau không thể có cùng tên?
- 22. Nút neo và nhập liệu HTML có cùng kiểu CSS, nhưng các kích thước khác nhau
- 23. Thành phần có cùng đặc điểm, nhưng các tham số kiểu khác nhau
- 24. Sự khác biệt giữa Tệp # xóa (Đường dẫn) và Tệp # xóa()
- 25. Biến toàn cầu không được khởi tạo thuộc loại khác nhau nhưng có cùng tên - hành vi liên kết lạ
- 26. Tên miền phụ có thể xóa cookie miền không?
- 27. Grails Render Template khác nhau Controller/Đường dẫn
- 28. Cách áp dụng bản vá Git cho tệp có tên và đường dẫn khác?
- 29. tên đường dẫn lạ?
- 30. Thực hành không tốt để có hai lớp cùng tên trong các gói khác nhau?
Vì vậy, nếu đường dẫn có khả năng chứa 6 giá trị khác nhau, tôi nên sử dụng document.cookie 6x với đúng đường dẫn? – JKown
@JKown Về cơ bản. Mặc dù, tôi sẽ đề nghị lặp qua các đường dẫn để bạn chỉ có 1 câu lệnh 'document.cookie'. Xem chỉnh sửa của tôi cho một tùy chọn. –
Cảm ơn, điều đó phù hợp với tôi. – JKown