Как найти положение XY в JavaScript со смещением - PullRequest
2 голосов
/ 08 ноября 2010

привет, у меня возникли некоторые проблемы с моим кодом javascript ..

Я хочу получить позицию xy для выделенного текста в javascript, и я использую функцию офсайда, например:результат позиции X, Y всегда 0, когда я вызываю эту функцию, чтобы найти выбранный текст позиции

var select = window.getSelection();

var posX = findPosX(select);
var posY = findPosY(select);

, и я использую Mozilla Firefox .. Пожалуйста, помогите мне

1 Ответ

2 голосов
/ 08 ноября 2010

Вам нужно будет вставить фиктивный элемент на одном конце выделения. Вот функция, чтобы получить координаты начала или конца выделения во всех основных браузерах, включая IE 6. Обратите внимание, что для этого требуется поддержка метода элементов getBoundingClientRect(), который исключает Firefox 2. Если вам нужно это поддерживать в браузере, вы можете использовать что-то вроде ваших findPosX/Y функций на элементе-заглушке вместо getBoundingClientRect().

function getSelectionCoordinates(start) {
    var x = 0, y = 0, range;
    if (window.getSelection) {
        var sel = window.getSelection();
        if (sel.rangeCount) {
            range = sel.getRangeAt(sel.rangeCount - 1);
            range.collapse(start);
            var dummy = document.createElement("span");
            range.insertNode(dummy);
            var rect = dummy.getBoundingClientRect();
            x = rect.left;
            y = rect.top;
            dummy.parentNode.removeChild(dummy);
        }
    } else if (document.selection && document.selection.type != "Control") {
        range = document.selection.createRange();
        range.collapse(start);
        x = range.boundingLeft;
        y = range.boundingTop;
    }
    return {x: x, y: y};
}

var coords = getSelectionCoordinates(true);
alert(coords.x + ", " + coords.y);
...