Javascript 给定一个DIV w contenteditable,如何找到光标位置以提取子字符串

Javascript 给定一个DIV w contenteditable,如何找到光标位置以提取子字符串,javascript,jquery,html,contenteditable,Javascript,Jquery,Html,Contenteditable,鉴于: 我想做的是给定光标位置,让所有东西向后移动,直到第一个@,相对于光标位置。鉴于这个范围给了我错误的光标,我不能像我一直尝试的那样使用.text(),比如: Range collapsed: true commonAncestorContainer: Text endContainer: Text endOffset: 5 startContainer: Text startOffset: 5 你有什么办法让我成功吗?我意识到这不容易!多谢各位 text = $('#comm

鉴于:

我想做的是给定光标位置,让所有东西向后移动,直到第一个@,相对于光标位置。鉴于这个范围给了我错误的光标,我不能像我一直尝试的那样使用.text(),比如:

Range
 collapsed: true
 commonAncestorContainer: Text
 endContainer: Text
 endOffset: 5
 startContainer: Text
 startOffset: 5
你有什么办法让我成功吗?我意识到这不容易!多谢各位

text = $('#comment_content_new p').text();
trigger = '@';
lastTriggerPosition = text.substring(0, cursorPosition).lastIndexOf(trigger);
怎么样

String.split:
Array.pop:

怎么样

String.split:

Array.pop:

如果您想要可靠且经过测试的跨浏览器解决方案,请尝试


在这些方法中,有一种可以获取和设置插入符号位置。

如果您想要一个可靠且经过测试的跨浏览器解决方案,请尝试


在这些方法中,有一种可以获取和设置插入符号位置。

很抱歉,这实际上不起作用。如果您键入“@asas@asassd”,它可以正常工作,但是只要span标记插入到,就像问题中一样,它就不再工作了。为什么会发生这种情况?t='@Booo Meadows@XXXXXXXXX'@Booo Meadows@XXXXXXXXX“t.split('@')['',“Booo Meadows”,“XXXXXXXXX”]更重要的是,假设的光标位置就是问题所在。我不知道如何正确地得到它?我假设你可以得到光标位置,因为在你的问题中“我可以用:”得到光标位置。不过,之前已经讨论过如何在这里执行此操作。抱歉,这实际上不起作用。如果您键入“@asas@asassd”,它可以正常工作,但是只要span标记插入到,就像问题中一样,它就不再工作了。为什么会发生这种情况?t='@Booo Meadows@XXXXXXXXX'@Booo Meadows@XXXXXXXXX“t.split('@')['',“Booo Meadows”,“XXXXXXXXX”]更重要的是,假设的光标位置就是问题所在。我不知道如何正确地得到它?我假设你可以得到光标位置,因为在你的问题中“我可以用:”得到光标位置。不过,之前已经讨论过如何在这里做到这一点。
text = $('#comment_content_new p').text();
trigger = '@';
lastTriggerPosition = text.substring(0, cursorPosition).lastIndexOf(trigger);
var str = text.substring(0, cursorPosition); // assumes this will give you the text in the div starting at the beginning and ending at the current cursor posistion.
var splitArr = str.split("@"); // splits the string into array of substrings with '@' as a delimiter.
var result = splitArr.pop(); // returns last item of array