2015-11-01 3 views
2

Как и для Determine if an HTML element's content overflows, как вы можете найти положение индекса элемента, который переполняется?Найти положение переполнения текста с использованием Javascript

Пример: Если у нас есть длинная строка внутри div, которая переполняется на 100-й символ, как я могу найти эту позицию?

Редактировать: Подробнее, потому что @dfsq спросил: Я пытаюсь создать хороший текстовый читатель с перелистыванием страницы.

+0

Вы можете найти его, да. Может быть многословным, но возможным. Реальный вопрос в том, зачем вам это нужно, потому что, вероятно, есть лучший и простой способ решить вашу задачу. – dfsq

ответ

1

Вот пример кода. Вам нужно будет начать с нулевых символов, а затем добавить каждый символ в один за другим и определить, когда offsetWidth превышает scrollWidth.

function find_overflow_index(elt, str) { 
    elt.textContent = ''; 

    for (var i=0; i < str.length; i++) { 
    elt.textContent += str[i]; 
    if (elt.scrollWidth < elt.offsetWidth) return i; 
    } 

    return -1; // no overflow 
} 

find_overflow_index(
    document.getElementById("foo"), 
    "Long string which might overflow"); 
+0

Умный ответ, но не лучше ли разбить на пробелы и процедить через результирующий массив, добавляя слова? Меньшее количество итераций, меньше манипуляций с DOM и не будет перелистывать страницы в середине слова. Можно также упомянуть, что это должно быть добавлено к событию изменения размера браузера, так что разбивка страницы будет пересчитана при изменении размера пользователя. –

Смежные вопросы