Да, есть способ. Я буду использовать API YUI, чтобы проиллюстрировать мой пример. Сначала ваш текст должен быть в каком-то элементе dom, будь то span, div, p или что-то еще, он должен быть в элементе. Здесь я приму пункт списка
var viewPortY = YAHOO.util.Dom.getDocumentScrollTop(),
viewPortHeight = YAHOO.util.Dom.getViewportHeight(), i = 0,
// get all the dom elements that contain the text, sorry if this isn't exact, its just a rough example
items = YAHOO.util.Dom.getElementBy(null, 'li', document.getElementById('item-container')),
viewedItems = [];
for (i = 0 ; i < items.length; i++) {
var y = YAHOO.util.Dom.getY(items[i])
if (y > viewPortY && y < (viewPortY + viewPortHeight)) {
viewedItems.push(items[i])
}
}
Итак, по сути, я получаю все объекты dom, которые содержат интересующий вас текст. Затем я перебираю цикл, и координата Y каждого находится между областями просмотра Y и Y + Высота ViewPort, я помещаю в массив. *