Вдохновленный ответом tybro, я придумал это, что решает проблему в вашем вопросе.Если текстовое поле имеет фиксированную длину, что произойдет, если последняя буква вообще не видна?О какой координате следует сообщать тогда?В любом случае, это можно обойти, расширив текстовое поле на неопределенное время.
// markup
<div id="textbox">
<span id="edit" contentEditable></span>
<span id="end"></span>
</div>
<div id="report">x:? , y:?</div>
// css
#textbox {
border: solid black 1px;
min-height: 1em;
white-space: nowrap;
}
// javascript
$(function() {
$('#textbox').click(function() {
$('#edit').focus();
});
$('#edit').keypress(function() {
var endoff = $('#end').offset();
$('#report').html('x:' + endoff.left + ' , y:' + endoff.top);
});
});
Единственное, в чем я не уверен, так это когда keypress
срабатывает, если происходит изменение содержимого, это проблема.Вы можете обойти это, введя тайм-аут или, возможно, есть даже лучшее решение.К сожалению, событие keyup
, похоже, не работает на contentEditable
вещах (в любом случае в Firefox 5).
Надеюсь, это поможет.