當用戶在可編輯內容的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