weranda
@weranda

Бывают ли случаи неверного срабатывания вычислений в JavaScript / jQuery?

Приветствую

Вчера провозился весь день. На странице сайта есть заголовок H1 сразу после него вставил JS, определяющий его высоту, но его высота определялась не всегда корректно — чем дальше по структуре в HTML вставлял скрипт, тем чаще он корректно срабатывал (правильно определял высоту), но все равно были случаи неверного срабатывания. Решил попробовать jQuery — поместил файл перед закрывающимся тегом BODY и радовался недолго, обновил страницу несколько раз и все-таки увидел тот же результат — высота не соответствует отображению на экране. Подом добавил $(window).load(...) и попробовал раз сто — все корректно определяет.

Пробовал даже ширину определять, но и она не всегда корректно определяется, даже если заголовок помещен на одной строке.


Решил все заново проверить (разместил скрипт после заголовка). Уменьшил скорость интернета до 10 kb/s и начал всматриваться + добавил функцию window.stop(); сразу после скрипта, на экране все корректно отображается, но ситуация та же самая — высота заголовка в JS / jQuery не всегда соответствует отображаемой на экране.

Попробовал сделать небольшой шаблончик-скелет нужного блока с заголовком вообще без стилей и скриптов. И тогда все корректно высчитывается.

Есть недопонимание того почему так происходит. Вроде, и CSS загрузился + на экране все корректно, но корректно высчитывается высота только внутри $(window).load(...). Может быть, дело в том, что JS / jQuery срабатывают раньше, чем браузер применяет правила стилей к блоку или что-то другое?

Поясните пожалуйста.

Для справки, коды:
spoiler

JavaScript
var myTitle = document.querySelector('.title').offsetHeight;
console.log(myTitle);

jQuery
console.log($('.title').height());
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Используется кастомный шрифт, который не загружен/не отрендерен на момент первых измерений.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы