本文概述
- 1.启用断点切换
- 2.定义断点的样式
【如何在ACE Editor装订线上添加(切换)断点】在本文中, 我们将向你介绍如何使用JavaScript在Ace编辑器中轻松设置和删除断点。
1.启用断点切换Ace编辑器通过setBreakpoint, clearBreakpoint和getBreakpoints方法提供了一种通过guttermousedown事件和当前编辑器会话处理断点的内部方法。你可以使用on方法轻松地将此事件附加到当前编辑器, 提供你要处理的事件的名称作为第一个参数, 并提供将要执行并接收该事件的回调作为第二个参数。基本上, 当用户单击装订线中的某个位置时, 将执行此回调, 在此回调内部, 你需要验证一些规则:
- 如果clicked元素不包含ace_gutter-cell类, 则不会发生任何事情, 因为clicked元素将不是一行, 因此也不会是断点。
- 如果当前的编辑器没有集中精力, 那么也不会发生任何事情。
- 如果装订线上的单击区域是数字之后的区域, 例如1、2、3, 则也不会发生任何事情。
- 将当前会话断点存储到通过session.getBreakpoints方法获取它们的变量中。
- 存储当你在装订线内单击当前行时更新的当前行。
- 检查存储的断点中是否已注册当前行, 如果是, 则在此处应用的逻辑是在用户单击已定义的断点时删除该断点, 否则, 应将该断点添加到编辑器中。
// 1. Initialize ace editorvar editor = ace.edit("editor");
// 2. Initialize with a custom themeeditor.setTheme("ace/theme/monokai");
// 3. Predefine some highlight mode, in our case PHPeditor.getSession().setMode({path: "ace/mode/php", inline: true});
// 4. Attach an event listener to handle when the user clicks on some row of the gutter//In this case, the breakpoint will be added in the clicked position of the documenteditor.on("guttermousedown", function(e) {var target = e.domEvent.target;
if (target.className.indexOf("ace_gutter-cell") == -1){return;
}if (!editor.isFocused()){return;
}if (e.clientX >
25 + target.getBoundingClientRect().left){return;
}var breakpoints = e.editor.session.getBreakpoints(row, 0);
var row = e.getDocumentPosition().row;
// If there's a breakpoint already defined, it should be removed, offering the toggle featureif(typeof breakpoints[row] === typeof undefined){e.editor.session.setBreakpoint(row);
}else{e.editor.session.clearBreakpoint(row);
}e.stop();
});
2.定义断点的样式如果你已经测试了以前的JavaScript, 你将看到, 尽管没有异常抛出, 但是由于一切运行正常, 所以在编辑器中没有可见的断点, 就像在其他IDE中一样。发生这种情况是因为你尚未添加一些样式来定制ace_breakpoint。你可以使用以下CSS添加非常通用的代码:
.ace_gutter-cell.ace_breakpoint{ border-radius: 20px 0px 0px 20px;
/* Change the color of the breakpoint if you want */box-shadow: 0px 0px 1px 1px #248c46 inset;
}
以下代码笔显示了使用断点的功能齐全的ACE编辑器, 因此在一些数字前单击装订线, 你将看到断点将使用绿色标记添加:
请参阅CodePen上带有我们代码世界(@ourcodeworld)的断点的Pen ACE编辑器。
显然, 你可以随意修改断点的样式并根据需要对其进行自定义, 添加一些特殊字符(例如?或其他字符)。
编码愉快!
推荐阅读
- 如何使用JavaScript正确地按字母顺序对带有特殊字符的字符串数组进行排序
- 如何使用JavaScript检查字符串是否是回文
- 如何在Ubuntu 16.04中使用命令行CLI安装ClamAV并扫描病毒
- 如何在JavaScript中对字符串进行驼峰化和脱峰处理
- JavaScript异常在Google Chrome中的含义为”不允许将顶部框架导航到数据URL(”)
- 如何安装和使用Exa,这是Ubuntu 16.04中ls命令的现代替代品
- 如何在dhtmlxScheduler中更改事件的默认长度(持续时间)
- 如何使用纯JavaScript或jQuery在客户端对表进行排序
- 如何使用MathCalc在JavaScript中实现基本的数学表达式计算器