From ebaf9e9107a4a40bfe5d8483c23268a8dfce2671 Mon Sep 17 00:00:00 2001 From: life Date: Fri, 25 Dec 2015 11:29:08 +0800 Subject: [PATCH] remove ace when double delete & ace content is blank --- public/js/app/page.js | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/public/js/app/page.js b/public/js/app/page.js index 66a3c0c2..429b34d1 100644 --- a/public/js/app/page.js +++ b/public/js/app/page.js @@ -797,7 +797,7 @@ LeaAce = { $pre.removeClass('ace-to-pre'); $pre.attr("contenteditable", false); // ? 避免tinymce编辑 var aceEditor = ace.edit(id); - + aceEditor.container.style.lineHeight = 1.5; aceEditor.setTheme("ace/theme/tomorrow"); @@ -808,8 +808,7 @@ LeaAce = { b = brush.split(':')[1]; } catch(e) {} } - b = b || "javascript"; - if (b == 'false') { + if (!b || b === 'false') { b = 'javascript'; } aceEditor.session.setMode("ace/mode/" + b); @@ -822,8 +821,6 @@ LeaAce = { aceEditor.setFontSize("14px"); } - - aceEditor.getSession().setUseWorker(false); // 不用语法检查 aceEditor.setOption("showInvisibles", false); // 不显示空格, 没用 aceEditor.setShowInvisibles(false); // OK 不显示空格 @@ -1142,6 +1139,8 @@ LeaAce = { }, // 转换raw <-> code handleEvent: function () { + var me = this; + if(!this.canAce()) { return; } @@ -1175,6 +1174,34 @@ LeaAce = { me.aceToPre($pre, true); } }); + + // 当ace里没有内容时, 连续删除则把ace remove掉 + // keydown的delete事件没有 + var lastDeleteTime; + $("#editorContent").on('keyup', 'pre', function(e) { + var keyCode = e.keyCode; + // console.log('keyup'); + if(keyCode == 8 || keyCode == 46) { // BackSpace || Delete + // console.log('delete'); + if(!lastDeleteTime) { + lastDeleteTime = (new Date()).getTime(); + } + else { + var now = (new Date()).getTime(); + if(now - lastDeleteTime < 300) { // 间隔时间很短 + var inAce = me.isInAce($(this)) + if(inAce && !inAce[0].getValue()) { + // console.log('destroy'); + inAce[0].destroy(); + $(this).remove(); + return; + } + } + lastDeleteTime = now; + } + // console.log($(this)); + } + }); } };