从my recent question开始,我使用KeyPress事件在富文本编辑器中检测“@”字符。顺便说一句,我刚刚发现其他浏览器中的KeyPress事件,如Firefox 3.5和Google Chrome 4,在此次活动中不会返回任何位置。
为了澄清,我的位置是屏幕顶部或左侧的距离。在这种情况下,它应该是新字符和IFrame屏幕之间的距离。在IE中,我可以在事件对象中找到它,如x,y,offsetX,offsetY。
是否可以从输入的最后一个字符中找到位置?或者您有任何其他想法可以找到它。
答案 0 :(得分:2)
对于输入/文本区域,您可以使用input.selectionStart
/ selectionEnd
找到光标的当前位置。如果它是一个简单的插入按键,它将位于新角色之前。 (不要依赖它,有些浏览器既不支持IE也不支持Mozilla扩展。)
如果您的“富文本编辑器”是HTML designMode / contentEditable的东西(恐怖!)那么我猜你必须使用window.getSelection()
来读取光标的位置。这更糟糕的是:
if (window.getSelection) {
var selection= window.getSelection();
if (selection) {
if (selection.getRangeAt) { // Mozilla
if (selection.rangeCount>=1) {
var range= selection.getRangeAt(0);
return [range.startContainer, range.startOffset];
}
} else if (selection.focusNode) { // Webkit
return [selection.focusNode, selection.focusOffset];
}
}
}
似乎与Mozilla的designMode一起使用,尚未在其他版本中进行过测试。