[英]How to place the caret where it previously was after replacing the html of a contenteditable div?
[英]Contenteditable div set caret after replacing text with HTML
我试图创建一个基于Web的代码编辑器,并且想出了一种方法来扫描整个文本,并将与我的超级简单正则表达式匹配的所有内容替换为彩色HTML。 在这里看到:
$("#text-area").on('keyup', function(e){
var html = $("#text-area").html();
var filter = html.replace(/function/g, '<span style="color:pink;">function</span>');
$("#text-area").html(filter);
});
我花了几个小时来研究stackoverflow,发现了类似的情况,但是有细微的差别,我无法在这里适用于我的情况。 这是问题所在:
1)一旦我扫过文本并将选择性的单词替换为彩色HTML,插入标记将返回到div的开头。
2)因为它是一个代码编辑器(读取其他文件),所以我需要空白: pre
或pre-wrap
。 但是然后,对于任何数量的换行符,插入符号的位置都是相同的,因此插入符号不会移动,并且仅在插入符号下方添加新行,并且从任何新的空行跳至任何不为空的行。
我在JSFiddle中获得了我的情况的简化版本
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.