Могу ли я использовать javascript, чтобы заставить браузер «сбрасывать» любые ожидающие изменения макета?

У меня есть библиотека, которая создает пользовательский интерфейс с использованием Javascript, и из-за задействованного динамического контента я иногда хочу разместить контент в браузера, проверьте, как макет был изменен для поддержки этого, а затем выполните другую логику в зависимости от результата. Например: определить, не переполнен ли какой-то текст, и усечь его многоточием.

Обычно я реализую это путем внесения изменений, а затем с помощью window.setTimeout (0), чтобы дождаться обновления макета и вызвать остальную часть логика. Это явно неоптимально, так как разные браузеры могут реализовать минимальный тайм-аут, который слишком медленный, чтобы предотвратить мерцание, или более быстрый, который использует много ресурсов процессора.

В идеале я хотел бы внести изменения в DOM, а затем принудительно обновить макет синхронно и сразу же запустить логику «исправления». Есть идеи?

5
задан Guss 5 August 2011 в 12:01
поделиться