Javascript 如何在contenteditable环境中获取正在单击的行?
我是HTML/JS新手,我正在尝试将文本编辑器作为一个小项目。 如果我没有清楚地解释我的想法,请原谅 假设我在我的Javascript 如何在contenteditable环境中获取正在单击的行?,javascript,html,jquery,css,Javascript,Html,Jquery,Css,我是HTML/JS新手,我正在尝试将文本编辑器作为一个小项目。 如果我没有清楚地解释我的想法,请原谅 假设我在我的contenteditablediv环境中有以下文本,并让|表示光标(就像在大多数编辑器中看到的那样): 我怎样才能返回文本“这里还有一些文本” 我正在使用jQuery,我想我应该使用onClick处理程序,但这不响应用于导航的箭头键。我需要什么样的事件处理程序?到目前为止,我已经解析了文本以替换div分隔符,但是我对如何继续有点不知所措。 你建议做什么?(一般链接/建议也有效,我正
contenteditable
div
环境中有以下文本,并让|
表示光标(就像在大多数编辑器中看到的那样):
我怎样才能返回文本“这里还有一些文本”
我正在使用jQuery,我想我应该使用onClick处理程序,但这不响应用于导航的箭头键。我需要什么样的事件处理程序?到目前为止,我已经解析了文本以替换div
分隔符,但是我对如何继续有点不知所措。
你建议做什么?(一般链接/建议也有效,我正试图通过本项目了解更多信息)
编辑,这是我的html:
以下是JS:
$(document).on('keydown','.editor',函数(e){
//检测“tab”键
如果(e.keyCode==9){
//添加选项卡
document.execCommand('insertHTML',false',和#009');
//防止关注下一个元素
e、 预防默认值()
}
var text=$(“#编辑器”).html();
console.log(“MYLITERAL:+text”);
//解析字符串:)
//对于div标记,将其替换为\n
var tmp=text.replace(//g,“”);
tmp=tmp.replace(//g,“”);
tmp=tmp.替换(/
/g,“\n”);
控制台日志(tmp);
document.getElementById(“demo”).innerHTML=tmp;
});
您可以尝试以下操作:
var strO、endO、lstEle;
功能选择范围(开始、结束、此){
var el=此值,sPos=开始,ePos=结束;
var charIndex=0,range=document.createRange();
范围。设置开始(el,0);
范围。塌陷(真);
var nodeStack=[el],node,foundStart=false,stop=false;
而(!stop&&(node=nodeStack.pop()){
if(node.nodeType==3){
var nextCharIndex=charIndex+node.length;
如果(!foundStart&&sPos>=charIndex&&sPos=charIndex&&ePos,你应该显示你的html.code。这里似乎有很多相关的问题,所以我建议尝试更努力地搜索:-)一些例子:,@Frenchy做到了!
hi this is some text
here is some mor|e text
hello, world!