CodeMirror:如何在光标位置之前或之后读取编辑器文本
CodeMirror: How to read editor text before or after cursor position
我试图找到一种方法来测试光标之前是否有一个特定的字符串,然后触发事件。
我想做的例子:
用户单击编辑器内的某个地方,触发cursorActivity
(光标或编辑器更改)事件,我捕获该事件并测试前6个字符是否与字符串'color:'
匹配,如果是这样,那么我做一些事情。
我似乎找不到任何一种方法,让你实际上直接从编辑器中读取,除了捕捉readInput
事件,每次输入字符或粘贴字符串时触发。这在一定程度上是有效的,但是当用户用鼠标点击移动光标时就失效了。
TL,博士如何检测光标在特定字符串之后立即移动到某个地方?
Ok终于找到解决办法了。您可以使用editor.doc
检索实际文档,它允许您获得游标行&字符位置。然后,可以使用editor.doc.getLine(n)
检索所需的行,并比较子字符串
下面是我的测试用例:
<!-- Create a simple CodeMirror instance -->
<link rel="stylesheet" href="lib/codemirror.css">
<script src="lib/codemirror.js"></script>
<textarea id="myTextarea"></textarea>
<script>
var editor = CodeMirror.fromTextArea(myTextarea, {
lineNumbers: true
});
//Catch cursor change event
editor.on('cursorActivity',function(e){
var line = e.doc.getCursor().line, //Cursor line
ch = e.doc.getCursor().ch, //Cursor character
stringToMatch = "color:",
n = stringToMatch.length,
stringToTest = e.doc.getLine(line).substr(Math.max(ch - n,0),n);
if (stringToTest == stringToMatch) console.log("SUCCESS!!!");
});
</script>
相关文章:
- 如何使用 ContentTools 在之前或之后没有内容时保留多个
- 使用jQuery或JavaScript读取属性文件
- 如何使用 ajax 或 jquery 读取异步 HTTP (servlet3.0) 响应
- 在服务器端的javascript之后读取hiddenfield的值
- PHP 从 XLS 或 HTML 读取数据并显示在 PHP 页面中
- 字符、符号或数字之前或之后的空格;但是,不介于两者之间
- 使用 d3 或 ajax 读取本地文件文本(制表符分隔值)会导致 Firefox 开发控制台中的语法错误
- 仅从 JSON 对象读取日期或仅读取白天时间
- 如何在文本的每 5,000 个字符之后的第一个
或
之后插入一个 - 如何使用javascript或jquery读取json中的单个值
- 如何在'之后读取地址栏的内容'对HTML进行签名并插入值
- 如何通过javascript或jquery读取一个巨大的文本文件
- 在其他脚本之前或之后加载html5shivJS有关系吗?(页面加载时间)
- 是DOM中另一个元素之前或之后的元素
- 替换输入标记之前或之后的文本标签
- 如何使用JavaScript或jQuery读取json数据
- 您可以使用jquery或javaScript读取此JSON
- 使用php或javascript读取td值并显示总数
- 在调用另一个方法之前或之后调用Javascript fire方法
- CodeMirror:如何在光标位置之前或之后读取编辑器文本