Tôi có biểu mẫu bằng Trình chỉnh sửa TinyMCE chạy trên hệ thống LAMP. Tôi muốn tạo một tính năng tự động lưu tương tự như Google Documents. Tôi đã nghĩ về hai kịch bản tuy nhiên, cả hai sẽ tạo ra một chi phí trên máy chủ.Kiểu Google Tài liệu Tự động lưu bằng TinyMCE
- bài viết một yêu cầu Ajax trên KeyUp
- bài viết một yêu cầu Ajax mỗi năm 60
Rõ ràng là điểm đầu tiên là không khả thi. Bất cứ ai có thể đề xuất một giải pháp tốt hơn để chỉ hai?
Sửa 1
Ok, do đó, một lựa chọn thứ ba có thể là một sự kết hợp của câu trả lời Thariama và điểm thứ hai của tôi.
3) Đăng một yêu cầu Ajax mỗi năm 60 nếu có sự thay đổi signifcant ví dụ như 10 ký tự trở lên
Bất kỳ tiến bộ về vấn đề này sẽ được nhiều đánh giá cao.
Chỉnh sửa 2
Ok tôi đã prototyped giải pháp của tôi dựa trên điểm 3. Trong trường hợp bất cứ ai đang quan tâm đến mã của tôi chảy như thế này:
Tôi đang sử dụng JQuery. Tôi có một hình thức với một textarea với TinyMCE gắn liền với nó và một lĩnh vực ẩn để lưu trữ một số tổ hợp phím.
tinyMCE.init({
...
// Callback for counting keystrokes in TinyMCE
handle_event_callback : "keyCount"
});
$(function() {
autoSaveContent();
});
// Callback function - Get count, increment it and then set it
function keyCount(e) {
if(e.type == "keypress") {
var count = parseInt($("#keyCount").val());
count++;
$("#keyCount").val(count);
}
}
// Autosave every 10s if there have been over 30 keystrokes
function autoSaveContent() {
var keyCount = parseInt($("#keyCount").val());
if(keyCount > 30) {
tinyMCE.triggerSave();
var formData = $("#programmedItineraryForm").serialize();
$.post("/path/to/save.php", formData, function(data,textStatus) {
if(data.success) {
$("#keyCount").val(0);
}
});
}
setTimeout('autoSaveContent()',10000);
}
bạn có thể kích hoạt lưu khi trình chỉnh sửa mất tiêu điểm và/hoặc 60 lần có yêu cầu ajax. – Andreas