Я не знаю, правильно ли заголовок. Дело в том, что я нашел фрагмент, чтобы получить позицию курсора, когда он сосредоточен в контентном элементе. Я понимаю весь код, но есть пять строк, которые я не знаю, для чего они хороши.Сравнивая граничные точки между диапазонами
Хорошо. Эти строки являются функцией, которая передается в Treewalker в качестве параметра. И они касаются сравнения граничных точек, но, как и для чего ?. Я исследовал много дней и еще не нашел функциональность ists.
function(node) {
var nodeRange = document.createRange();
nodeRange.selectNode(node);
return nodeRange.compareBoundaryPoints(Range.END_TO_END, range) < 1 ?
NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
}
Весь фрагмент кода это (просто, чтобы расположить его в контексте):
function getCharacterOffsetWithin(range, node) {
var treeWalker = document.createTreeWalker(
node,
NodeFilter.SHOW_TEXT,
function(node) {
var nodeRange = document.createRange();
nodeRange.selectNode(node);
return nodeRange.compareBoundaryPoints(Range.END_TO_END, range) < 1 ?
NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
},
false
);
var charCount = 0;
while (treeWalker.nextNode()) {
charCount += treeWalker.currentNode.length;
}
if (range.startContainer.nodeType == 3) {
charCount += range.startOffset;
}
return charCount;
}
document.body.addEventListener("keyup", function() {
var el = document.getElementById("test");
var range = window.getSelection().getRangeAt(0);
document.getElementById("position").innerHTML = "Caret char pos: " + getCharacterOffsetWithin(range, el);
}, false);
Это можно увидеть на работе здесь: JS Fiddle
Спасибо вам большое, я просто хочу Прежде чем работать с этим, поймите это. Извините, за длинную статью.
Хорошо ... большое спасибо за ответ. Это действительно завершено ... У меня все еще есть некоторые вопросы после изучения некоторых вещей: в getRangeAt (index) ... имеет ли индекс значение «номер диапазона»? ... например, если пользователь выполняет два или более выбора. .. для того, чтобы обычно получить первый, index = 0? – Kenedy
А с другой стороны ... когда он проверяет, является ли тип выбора «Контроль» ... Я знаю, что существует три типа, но этот я не знаю, что это значит ... (когда пользователь делает несколько выборов , может быть?) – Kenedy
Это вещь IE. В пределах редактируемого элемента щелчок по объекту, подобному таблице или изображению или входу, отображает ручки изменения размера. Когда это происходит, выбор имеет тип «Контроль». IE необязательно позволяет выбирать несколько элементов таким образом. –