2012-10-26 25 views
5

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

  1. bài viết một yêu cầu Ajax trên KeyUp
  2. 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); 
} 
+0

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

Trả lời

2

Rất tiếc, có nhiều tùy chọn. Điểm 1 thực sự là một chút quá đắt. Tôi nghĩ rằng nên gửi yêu cầu dựa trên số lượng ký tự mới được nhập trong trình chỉnh sửa. Ví dụ, gửi một yêu cầu mỗi 5-10 ký tự mới. Bạn có thể tăng bộ đếm trênKeyDown hoặc onKeyUp và đặt lại bộ đếm đó khi yêu cầu được gửi.

0
tinymce.init({ 
    plugins: "autosave" 
}); 
+0

Còn một số giải thích? – Almo

+0

Nó sử dụng bộ đệm ẩn cục bộ để lưu bất kỳ thứ gì bạn đã nhập nếu bạn vô tình đóng tab. –

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