2009-09-02 29 views
10

Có thể giữ các biến (toàn cầu) của tôi khi trang được tải lại không? Nếu có, làm thế nào?Ngăn ngừa mất các biến khi nút tải lại trình duyệt được nhấn

Cảm ơn bạn đã được trợ giúp. Trân trọng.

+1

Xin lỗi nếu tôi bị dày đặc, nhưng thuật ngữ của bạn có vẻ không chuẩn. Cái gì có thể ngăn chặn về một "biến mảng toàn cục"? Hơn nữa, nút đặt lại trình duyệt là gì? –

+0

Bạn có một số mã để minh họa những gì bạn đang đề cập đến không? –

+0

xin lỗi ... you'r đúng Tôi có nghĩa là "ngăn chặn để khởi tạo giá trị hoặc đặt lại". Nói cách khác; Tôi muốn bảo vệ giá trị toàn cầu của mình và sử dụng nó trong các hoạt động tiếp theo. Cảm ơn. Trân trọng. –

Trả lời

2

Môi trường JavaScript sẽ được đặt lại khi trình duyệt rời khỏi trang của bạn. Tuy nhiên, bạn có thể đăng ký một trình xử lý onUnload để nối tiếp mảng của bạn với một cookie, sau đó kiểm tra điều này mỗi lần trang được tải và unserialise nó nếu có.

+0

Xin chào Adam, Điều gì đang xảy ra khi nhấn nút đặt lại trình duyệt? –

+0

Tôi cố gắng giải quyết vấn đề này mà không cần sử dụng cookie. –

1

Trình duyệt của bạn có nút đặt lại hay ý bạn là nút tải lại?

Khi tải trang, mọi thứ được tải mới. Không có gì còn lại từ bất kỳ trang nào trước đó. Nơi duy nhất để lưu trữ bất kỳ thứ gì còn tồn tại khi tải trang là trong cookie.

Lưu ý rằng lượng dữ liệu bạn có thể đặt trong cookie được giới hạn ở một vài kilobyte trên mỗi trang web. Giới hạn chính xác thay đổi từ trình duyệt đến trình duyệt, nhưng bạn không thể mong đợi để có thể đặt nhiều hơn một kilobyte hoặc hai giá trị dữ liệu trong cookie.

+0

Có nút tải lại ... Cảm ơn Guffa quá nhiều ... Trân trọng. –

4

Bạn có thể duy trì dữ liệu trên trang tải lại thông qua một cái gì đó như window.localStorage, window.sessionStorage (tiện ích mở rộng Mozilla độc quyền) hoặc trừu tượng cơ sở dữ liệu (window.openDatabase) do một số trình duyệt dựa trên WebKit cung cấp. Xem this article on MDC để biết tổng quan về Giao diện lưu trữ và this WebKit article về cách giới thiệu cơ sở dữ liệu của chúng.

+0

Cảm ơn Kangax quá nhiều ... nó rất thú vị. Trình duyệt nào dựa trên Webkit? –

+0

MỞ RỘNG, Trình duyệt web dành cho Android, Arora, Google Chrome, Epiphany, iCab, Trình duyệt Iris, Midori, OmniWeb, rekonq, Safari, Shiira, Skipstone, Sputnik cho MorphOS, SRWare Iron, Inox, Sunrise, TeaShark, Trình duyệt web cho S60, WebOS:) (Xem http://en.wikipedia.org/wiki/List_of_web_browsers#WebKit-based_browsers) – kangax

0

Bạn đang nói về Cookie? Nếu bạn có thể muốn xem lại this open-source module

Điều này sẽ dễ dàng cho phép bạn lưu trữ cookie, đó là dữ liệu, ngay cả sau khi nhấp chuột tải lại trình duyệt. Điều này làm cho nó thực sự dễ dàng và nó là những gì tôi sử dụng.

var cookie = new HTTP.Cookies(); 
cookie.write('mydata', 'myvalue', '+1y'); 

//later on you can get that data EVEN AFTER a reload 
var x = cookie.read('mydata'); 

Bạn có lẽ không nên cố gắng thực hiện cookie từ đầu mặc dù nó rất đau và bạn phải thực hiện nhiều thử nghiệm trên các trình duyệt web, như để đảm bảo Internet Explorer hoạt động.

3

Trong cùng một kiểu, bạn có thể lưu trữ các giá trị chuỗi trong khóa băm.

Sử dụng tài sản:

window.location.hash = 'flight/105';

Sau đó, khi làm mới trang bạn khởi tạo lại các biến của bạn.

8

Hãy thử điều này cookie-less javascript function.

Về cơ bản, lưu trữ dữ liệu của bạn trong thuộc tính window.name không xóa giá trị khi bạn tải lại trang hoặc chuyển đến một trang web khác.

+0

hoạt động hoàn hảo, tyvm –

Các vấn đề liên quan