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');