在实现博客保存草稿的功能时,经常按照习惯Ctrl + S了,于是浏览器弹出保存页面,但实际上我们更像通过按 Ctrl + S保存草稿。于是乎有了如下代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>禁用浏览器CTRL+S默认事件</title>
</head>
<body>
<script>
// 监听键盘按下事件
document.onkeydown = function() {
// 判断 Ctrl+S
if(event.ctrlKey == true && event.keyCode == 83) {
console.log('Ctrl + s');
// 或者 return false;
event.preventDefault();
}
}
</script>
</body>
</html>
但是呢,在CkEditor编辑器下,时灵时不灵的,原来Ckeditor有一套自己的事件,所以要想实现只要打开当前页面ctrl + S就保存,还需要添加Ckeditor的事件监听。
// 处理Ctrl + S自动保存
var editor = CKEDITOR.instances.blog_content;
// 设置值,并添加绑定事件
editor.setData(null,function(){
//绑定keydown事件,既绑定键盘按下事件,其他事件见jquery的相关事件名称
CKEDITOR.instances.blog_content.document.on("keydown", function(event){
//绑定按下的建值值 为ctrl+s(处理保存的快捷键)
if (event.data.$.keyCode == 83 && event.data.$.ctrlKey) {//注意取值的方法,和一般的event参数不一样
event.data.$.preventDefault();//关闭默认的弹窗
commit_save();
// save(true);//处理保存业务
}
});
});