Próba stworzenia metody, która może odczytać bieżący widoczny tekst wewnątrz elementu. Metoda, którą widzicie poniżej, jest tak daleko, jak to było w ciągu ostatnich kilku dni.Uzyskiwanie widocznego tekstu w kolumnach CSS3
Czy jest coś bardziej niezawodnego w uzyskiwaniu widocznego tekstu w elemencie innym niż przy użyciu karetki/zakresu? Przyczyną problemu jest to, że mam dużo nadpisanego tekstu, który następnie zostanie wybrany, ponieważ caret nie przechwytuje textNode, ale zamiast niego kontener nadrzędny.
Przykładem tego, co moja strona wygląda & dlaczego mam problemy z metodą bieżącego:
- Jak teraz Gael ma najbardziej przyjazny wydajność rozwiązanie & najłatwiejsze do wdrożenia.
Nie wiesz, ja tu sensu, inaczej daj mi znać :)
function getTextInColumn (rect) {
var startX = rect.left;
var startY = rect.top;
var endX = rect.left + rect.width - 2;
var endY = rect.top + rect.height - 2;
var start, end, range = null;
var i = 0;
var rangeText = '';
while ((rangeText === '' && i < 100 && endY > 5)) {
range = null;
if (typeof document.caretPositionFromPoint != 'undefined') {
start = document.caretPositionFromPoint(startX, startY);
end = document.caretPositionFromPoint(endX, endY);
if (start !== null && end !== null) {
range = document.createRange();
range.setStart(start.offsetNode, start.offset);
range.setEnd(end.offsetNode, end.offset);
}
}
else if (typeof document.caretRangeFromPoint != 'undefined') {
start = document.caretRangeFromPoint(startX, startY);
end = document.caretRangeFromPoint(endX, endY);
if (start !== null && end !== null) {
range = document.createRange();
range.setStart(start.startContainer, start.startOffset);
range.setEnd(end.startContainer, end.startOffset);
}
}
if (range !== null) {
rangeText = range.toString();
}
endY -= 52;
i++;
}
return rangeText;
}
Nie jestem pewien, czy rozumiem: chcesz pobrać cały tekst znajdujący się w widocznej części strony? – Gael
@Gael - Nie chcę przechwytywać całego widocznego tekstu wewnątrz elementu DOM, który jest pokazany na obrazku dołączonym do postu. Trudność polega na tym, że cały tekst mieści się w tym samym elemencie. –
Czy możesz podać nam odpowiedni html? –