Я пытаюсь написать тест на работу, есть ли текст оказывается внутри <input>
тот же базовый уровень в качестве метки:Как вычислить базовый уровень текста
Для того, чтобы сделать это, Я хотел бы вычислить базовый текст, который был отображен в каждом элементе, и сравнить два значения. Возможно ли это, и если да, то как это делается? Если нет, есть ли лучший способ установить, что базовый уровень двух элементов одинаковый?
Я нашел способ определения базовой линии метки, которые, кажется, надежно работают:
function getBaseline(element) {
var span = document.createElement("span");
span.setAttribute("style", "font-size:0");
span.innerText = "A";
jQuery(element).prepend(span);
return span.getBoundingClientRect().bottom;
}
Однако этот метод не работает для <input>
, так как я не могу вставить промежуток в этом случае ,
Как большая проблема это? Так как эти вещи по умолчанию равны «vertical-align: baseline», они _do_ имеют одинаковую базовую линию, если вы не пишете какой-либо CSS, который испортится. –
@MrLister проблема заключается в том, что люди _до_ писать CSS, который испортил эти вещи, поэтому я пытаюсь написать модульные тесты, которые потерпят неудачу, когда они это сделают! –
[Это беспорядочно, но объясняет мое мышление] (http://jsfiddle.net/getuxnkc/). Он заменяет входной элемент диапазоном, который имеет каждое свойство CSS, скопированное из ввода. Не могли бы вы сделать что-то подобное, чтобы запустить чек? Сценарий копирования CSS [здесь] (http://stackoverflow.com/a/18108773/2930477) – misterManSam