Произойдет ли повторный рендеринг только при вызове метода modifyBackground()
в последней строке?
Это зависит от реализации браузера, иногда они не соответствуют спецификациям.
И, если это так, как пользовательский агент сообщает, что повторная визуализация не требуется?
Опять же, это зависит от реализации браузера. Вы должны понимать, как работает рендеринг в браузере. Вот отличное объяснение, которое вы можете проверить: Как браузер отображает веб-страницу . Ниже приведено резюме.
Существует 3 базовых c понятия:
- DOM
- CSSOM
- Render Tree.
объектная модель документа (DOM)
Когда браузер читает код HTML, когда он встречает элемент HTML, такой как html, body, div et c., Он создает JavaScript объект, называемый Node. В конечном итоге все HTML элементы будут преобразованы в JavaScript объекты. Поскольку каждый отдельный элемент HTML имеет разные свойства, объект Node будет создан из разных классов (функций конструктора).
CSS Модель объекта (CSSOM)
После создания DOM браузер читает CSS из всех источников (внешний, встроенный, встроенный, пользовательский агент и т. Д. c.) И создает CSSOM. CSSOM означает CSS Object Model, которая представляет собой древовидную структуру, как и DOM. Каждый узел в этом дереве содержит информацию стиля CSS для этого конкретного элемента DOM. CSSOM, однако, не содержит элементов DOM, которые не могут быть напечатаны на экране, например, et, c.
Render Tree
Вот ответ на ваш вопрос. Render-Tree - это древовидная структура, построенная путем объединения деревьев DOM и CSSOM. Браузер должен рассчитать расположение каждого видимого элемента и нарисовать их на экране, для этого браузер использует Render-Tree. Следовательно, если Render-Tree не будет создан, на экране ничего не будет напечатано.