Javascript обнаруживает полосу прокрутки в текстовом поле

Мне было интересно, знает ли кто-нибудь, как я пойду на обнаружение, когда полоса прокрутки появится внутри textarea.

В настоящее время я использую mootools для своего JavaScript, и у меня возникают проблемы с его поиском, чтобы обнаружить полосу прокрутки.

Ответ 1

function has_scrollbar(elem_id)
{
    const elem = document.getElementById(elem_id);
    if (elem.clientHeight < elem.scrollHeight)
        alert("The element has a vertical scrollbar!");
    else
        alert("The element doesn't have a vertical scrollbar.");
}

См. этот jsFiddle http://jsfiddle.net/qKNXH/

Ответ 2

Решение Tommaso отлично работает даже с текстовой областью. Но если бы пользователь вводил текстовое поле, и вдруг текстовое поле дало себе полосу прокрутки, ваш javascript не знал бы или не был бы вызван. Поэтому вы можете добавить что-то вроде

 onKeyUp='has_scrollbar("textareaID")'

Ответ 3

Я сделал jQuery "совместимую" версию кода Tommaso Taruffis

function resize_until_scrollbar_is_gone(selector) { 
    $.each($(selector), function(i, elem) {
        while (elem.clientHeight < elem.scrollHeight) {
            $(elem).height($(elem).height()+5);
        }
    });
}

Он может обрабатывать несколько элементов и принимает: селектора, объекты jQuery или элементы DOM.

Его можно вызвать так:

resize_until_scrollbar_is_gone('textarea');