2009-11-26 32 views
5

Tôi cần có thể chạy biểu mẫu HTML ngoại tuyến. Tôi có nghĩa là họ phải làm việc mà không cần kết nối trực tiếp đến máy chủ web. Trong một ứng dụng tôi đã viết cách đây hơn 5 năm, tôi đã thực hiện nó bằng cách thực hiện một trình xử lý giao thức tùy chỉnh - khi một biểu mẫu do người dùng khởi tạo gửi yêu cầu HTTP kết quả được ghi cục bộ. Vào thời điểm sau khi kết nối với máy chủ có sẵn, chương trình đồng bộ sẽ lặp lại thông qua các yêu cầu được thu thập và gửi chúng đến máy chủ thu thập các phản hồi và lưu chúng lại cục bộ để sử dụng sau này.Biểu mẫu HTML hoạt động ngoại tuyến

Đó là lúc đó. Bây giờ một khách hàng khác đã tiếp cận tôi với một yêu cầu rất giống nhau. Bạn nghĩ tôi nên sử dụng công nghệ nào vào ngày hôm nay?

Hỗ trợ HTML5 rất hạn chế. Google bánh răng? Hoặc tôi nên quay trở lại và tiếp tục sử dụng trình xử lý giao thức và bộ đồng bộ hóa tùy chỉnh?

+0

Câu hỏi làm rõ: Đây có phải là ứng dụng dành cho người dùng hàng loạt hoặc chỉ sử dụng nội bộ không? Bạn có biết yêu cầu của trình duyệt dành cho người dùng của mình không? Nếu nội bộ và bạn có một số điều khiển, bạn thậm chí có thể xem xét thực hiện một ứng dụng AIR đơn giản. Adobe AIR sử dụng Google Gears cho bộ nhớ 'ngoại tuyến' và các phiên bản sắp tới của AIR sẽ làm nhiều hơn nữa. – Joshua

+0

Đây là một ứng dụng nội bộ. Những người có công ty cung cấp máy tính xách tay kết nối với ứng dụng nhận biểu mẫu để điền và ra ngoài thực địa để thu thập thông tin bằng cách điền vào biểu mẫu – mfeingold

Trả lời

4

Tôi muốn nói dùng HTML5. Không phải tất cả các trình duyệt đều hỗ trợ nó; nhưng tất cả sẽ. Trong khi đó, tôi nghĩ rằng nó tốt hơn để nói "để có được các tính năng ngoại tuyến thử như vậy hoặc trình duyệt như vậy", thay vì "xin vui lòng tải về plugin này rất lớn với rất nhiều cảnh báo đáng sợ".

Cũng là một nhân khẩu học đơn giản: HTML5 nằm trong cái gì, 5% của tất cả các trình duyệt? 10%? vẫn còn nhiều hơn 0% người dùng đã cài đặt Gears.

Thật đáng tiếc, cảm ơn Google rất nhiều vì đã đẩy phong bì bằng Gears; nhưng trong tự nhiên, plugin duy nhất thường được chấp nhận là Flash. May mắn thay, HTML5 gần như đã có, với gần như các tính năng tương tự.

+0

+1 để đề xuất giải pháp dài hạn tốt – tosh

2

Google Gears là một ứng cử viên rất tốt - ví dụ, gần đây Google đã thông báo rằng người dùng sẽ có thể đính kèm tệp vào email trong khi 'ngoại tuyến'. Một phương pháp khác có thể là lưu trữ dữ liệu biểu mẫu đã đăng trong cookie và khi người dùng có thể quay lại trực tuyến, máy chủ sẽ chọn cookie và dữ liệu với nó.

+0

Cookie sẽ không cắt. Các biểu mẫu có thể có số lượng dữ liệu khá lớn, hàng chục trường. Tôi không muốn sử dụng cookie cho nó – mfeingold

+0

Tôi hiểu. Tuy nhiên, hãy nhớ rằng cookie có thể lưu trữ hàng nghìn megabyte dữ liệu, tùy thuộc vào trình duyệt. Ngay cả hàng chục lĩnh vực cũng không phải là một vấn đề. Chỉ vấn đề sẽ có dữ liệu tệp thực tế (tức là tải lên PDF). – Joshua

1

Dojo.Storage/ Dojo Offline, có cầu nối flash cho phép bạn lưu trữ dữ liệu bằng cách sử dụng kho dữ liệu của flash. Giới hạn là bộ người dùng, nhưng bắt đầu ở mức 5Mb. Thành phần thư viện là một trừu tượng và cũng hỗ trợ HTML 5, cookie và các bánh răng.

Thêm bánh răng sẽ cho phép bạn lưu trữ các đốm màu nhị phân, nếu bộ nhớ phân phối.

2

Tin đồn đang chạy quanh Google Gears không còn được phát triển nữa. Khi bạn nhìn vào các tính năng của bánh răng và bộ theo dõi vấn đề tại http://code.google.com/p/gears/issues/list?can=2&q=&sort=version&colspec=Version%20Milestone%20Owner%20ID%20Summary%20Component để phát triển Gears mới, chỉ có 3 mục sẽ được sửa trong phiên bản 0.6. Ngoài ra, theo bài viết Wikipedia này (http://en.wikipedia.org/wiki/Google_Gears), có vẻ như Google không thực hiện bất kỳ sự phát triển nào, và dự án nguồn mở cũng không có nhiều hơi nước. Lấy từ bài báo là:

"Vào cuối tháng 11 năm 2009, nhiều nguồn tin tức trực tuyến đã báo cáo rằng Google sẽ chuyển sang sử dụng HTML 5 thay vì Gears trong tương lai. Sau đó, người phát ngôn của Google đã làm rõ rằng Google sẽ tiếp tục hỗ trợ Gears không phá vỡ các trang web bằng cách sử dụng nó. "

Nói cách khác, Gears đã không còn được dùng nữa. Sử dụng HTML 5 để thay thế.

1

Google Gears là chết: http://gearsblog.blogspot.com/2011/03/stopping-gears.html

Tốt nhất có lẽ là một sự kết hợp của các tiêu chuẩn HTML5 cho applicationCache và localStorage.

Tuy nhiên, applicationCache nên được sử dụng một cách tiết kiệm - đó là một nỗi đau thực sự.Bài viết này giải thích tại sao, cũng như đưa ra một số gợi ý về cách sử dụng một cách tiếp cận lai của applicationCache và localStorage để xem offline (không nộp hồ sơ) của các trang:

http://www.alistapart.com/articles/application-cache-is-a-douchebag/

Dưới đây là một bài báo trong đó có một ví dụ về thu thập dữ liệu hình thức vào localStorage, nhưng tiếc là nó không cung cấp một ví dụ về thực nộp dữ liệu ẩn:

http://miniapps.co.uk/blog/post/using-html5-localstorage-as-a-fallback-for-offline-form-submission

Ngoài ra, hãy cẩn thận của window.navigator.onLine để phát hiện tình trạng ẩn - nó không được thực hiện một cách nhất quán trên bro wsers, và bạn có lẽ tốt hơn off có người sử dụng một cách rõ ràng cho bạn biết cho dù họ đang offline hay không.

- Chad

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