当用户在可编辑内容的div中键入文本时,有几个用于查找游标位置的配方,但是我无法让它们中的任何一个可用。事实上,我从最简单的代码中得到最令人惊讶的结果;如果在下面的代码片段中添加一些文本,然后退格删除它,那么您的startoffset实际上会增加! (我可以想象它的拆分元素或偏移包括不可打印的标签或东西)在内容可编辑div中获取游标行和列
我有一个div,将有一个固定的字体,但我打算添加语法突出显示(它不是什么codemirror可以只是做;它的互动性更强的提示与编辑脚本中的任何地方,如果那样的品牌意识,为什么我想要得到自己的位置)
<html>
<head>
<script type="text/javascript">
<!--
var ta = null;
function onKeypress(event) {
var range = window.getSelection().getRangeAt(0);
document.getElementById("msg").textContent = ""+range.startContainer+","+range.startOffset;
}
function init() {
ta = document.getElementById("ta");
ta.focus();
ta.onkeypress = onKeypress;
}
//-->
</script>
<body onload="init();">
<noscript>
Sorry, you need javascript. Not much to see here otherwise; move along.
</noscript>
<p id="msg"></p><hr/>
<div id="ta" contenteditable="true" style="width:100%; height:100%; font-family: courier;">
</div>
</body>
</html>
我怎么能知道行和列,并获得文本。对于任何行,在这样一个内容可编辑的div?
我不知道你说的是你的代码错误。当我在Chrome中测试您的示例代码时,代码似乎工作 - 当我退格时,位置显示不会更新,直到我开始在div中输入更多文本,但位置显示再次正确。是否退格不会触发keyup事件或其他我缺少的东西? – Griffin 2012-04-01 15:17:11
啊,我想我明白了,我发布了一个答案。 – Griffin 2012-04-01 15:29:49