2013-03-20 48 views
6

Tôi đang cố gắng tìm cách ngăn trình duyệt hiển thị hộp thoại lưu với sự kiện ctrl-s hoặc cmd-s trong Codemirror. Tôi có thể nhận được các phím bổ sung để làm việc, tôi chỉ không thể có được nó để tránh gọi lại tiếp tục sự kiện này. Tôi đã thử trả về false và tôi đã đào tạo tài liệu và mẫu. Có ai biết làm thế nào để ngăn chặn mặc định xảy ra?Ngăn sự kiện mặc định xảy ra với các biểu tượng chính của Codemirror

Dưới đây là các mã:

var editor = CodeMirror.fromTextArea(document.getElementById("code"), { 
lineNumbers: true, mode: "text/html", 
    extraKeys: { 
     "Ctrl-S": function (instance) { 
     alert("your mom"); 
     return false; 
     }, 
     "Cmd-S": function (instance) { 
     alert("my mom"); 
     return false; 
     } 
    } 
}); 
+1

Mã của bạn có vẻ hoạt động tốt nếu tập trung vào trình chỉnh sửa. tại sao không hoàn toàn vô hiệu hóa Ctrl + S http://stackoverflow.com/questions/11000826/ctrls-preventdefault-in-chrome – aljordan82

+0

Đó là một điểm tốt. Tôi đã hy vọng sử dụng trình soạn thảo để quản lý quá trình lưu, nhưng cuối cùng, tôi có thể sẽ phải làm theo đề xuất của bạn. Cảm ơn về thông tin bạn vừa nhập. – uadrive

+2

Trong Firefox, 'alert' là nguyên nhân khiến cửa sổ lưu tệp mặc định xuất hiện. Nếu bạn thực sự cần gọi cảnh báo ở đó, 'setTimeout (function() {alert (" some mom ")}, 1)' works !! – vikki

Trả lời

4

Đây là một câu hỏi cũ và các giải pháp đã được bên trong các câu trả lời, nhưng đối với bất cứ ai tìm kiếm một giải pháp để thực hiện Ctrl-S/Cmd-S sử dụng CodeMirror, tôi đoán có một giải pháp tốt hơn như được ghi chú trong CodeMirrror documentaion

CodeMirror.commands.save = function() { 
    /* Do your stuff */ 
};