1

コンテンツ編集可能なdivのカーソルの位置を取得するために、SOで次のコードを見つけましたが、常に0を返します。

位置を取得する必要がある関数:

new function($) {
    $.fn.getCursorPosition = function() {
        var pos = 0;
        var input = $(this).get(0);
        // IE Support
        if (document.selection) {
            input.focus();
            var sel = document.selection.createRange();
            var selLen = document.selection.createRange().text.length;
            sel.moveStart('character', -input.value.length);
            pos = sel.text.length - selLen;
        }
        // Firefox support
        else if (input.selectionStart || input.selectionStart == '0')
            pos = input.selectionStart;

        return pos;
    }
} (jQuery);

私がそれをテストするために使用するコード:

$('div.MESSAGE_OF_DAY').keyup(function() {
  alert($(this).getCursorPosition()); // always returns 0???
});

重要な場合はChrome(8.0.552.215)を使用しています。

4

1 に答える 1

8

見つけた関数は、コンテンツ編集可能な要素ではなく、入力またはテキストエリアでキャレットまたは選択を見つけるためのものです。Selectionカレット/選択境界の位置は、DOMノードに関して取得でき、ブラウザーのオブジェクトを使用してそのノード内でオフセットしてを取得できRangeます。これらのオブジェクトについて読むことをお勧めします(私が提供したリンクは良い出発点です)。Internet Explorerでは、このプロセスは完全に異なりますが、私のRangyライブラリを使用して違いをなくすことができます。

于 2010-12-10T01:28:58.060 に答える