2011-07-09 26 views
5

Tôi có một số DIV có thể kéo và có thể kéo lại trên một trang. Tôi muốn lưu số sate của các DIV này để khi trang được làm mới các DIV xuất hiện chính xác như trước khi làm mới.Lưu trạng thái của các phần tử html trên trang làm mới

Tôi nhận thấy những thứ như trò chuyện Facebook đang thực hiện việc này. Một cửa sổ trò chuyện đang mở sẽ vẫn mở khi bạn làm mới trang. Có ai biết làm thế nào điều này được thực hiện? Ai đó có thể cho tôi lời khuyên về việc làm điều tương tự không?

+0

Giải pháp có cần sử dụng javascript không? Facebook sử dụng ajax để thực hiện trò chuyện –

+0

Có thể trùng lặp: http://stackoverflow.com/questions/4007131/can-i-capture-and-save-the-current-state-of-a-webpage-using-javascript –

Trả lời

5

Nếu bạn muốn thực hiện theo cách Facebook, bạn sẽ cần gửi yêu cầu AJAX đến một trang khác của bạn trong một khoảng thời gian nhất định, trong trường hợp của Facebook, đó là mỗi khi bạn gửi thư. Trang đó phân tích cú pháp yêu cầu AJAX và cập nhật nó trong cơ sở dữ liệu. Khi bạn làm mới trang, cơ sở dữ liệu được gọi để xem nội dung sẽ hiển thị trong cuộc trò chuyện.

Vấn đề với việc sử dụng cookie là giới hạn kích thước (Facebook có thể lưu trữ ngày trò chuyện bằng cách sử dụng cơ sở dữ liệu).

Bạn cũng sẽ không cần phải lo lắng nếu ứng dụng đã tắt cookie vì tất cả thông tin được lưu trữ trên máy chủ.

1

Mmm, không đơn giản, nhưng có thể. Bạn nên lưu trữ 'trạng thái' đó trong một cookie và sau đó truy lục cookie đó trên tiêu điểm trang (hoặc tải).

Như cookie chỉ thừa nhận chuỗi, bạn có thể chuyển đổi đối tượng javascript để sử dụng chuỗi

var str = JSON.stringify(obj); 

và để chuyển đổi trở lại sử dụng

var obj = JSON.parse(str); 

(chức năng JSON được hỗ trợ trong các trình duyệt hiện đại).

Bằng cách này bạn có thể lưu/truy xuất đối tượng javascript, bạn có thể lưu trữ (trong trường hợp của bạn) một số tọa độ, vị trí, kích thước, bất cứ điều gì bạn cần.

Hy vọng điều này sẽ hữu ích. Chúc mừng

+0

I sẽ chơi xung quanh với nó và xem những gì tôi có thể tìm ra. Có bao nhiêu dữ liệu có thể được lưu trữ trong một cookie mặc dù? Tôi có nên lo lắng về thời gian trễ, vì tất cả các cookie được gửi đến máy chủ cho mọi yêu cầu? – matt

+0

Bạn có thể lưu trữ tối đa 4kb cho mỗi cookie. Đối tượng serialization không nên chiếm hơn 1k (khoảng 200 byte sẽ là đủ tôi nghĩ), do đó, lag là hoàn toàn không phải là một vấn đề –

0

Tôi đã kết thúc bằng cách sử dụng hệ thống AJAX lưu dữ liệu ở phía máy chủ. Sau đó, khi tải lại trang, trang sẽ sử dụng dữ liệu phiên đã lưu để tạo hiển thị thích hợp.

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