Я занимаюсь разработкой веб-сайта stati c. Я добавляю таблицу стилей CSS в заголовок документа, используя JavaScript. После CSS загрузок я делаю некоторые расчеты, основанные на положении и размерах элементов. Таким образом, CSS обязательно сначала загружается, а затем вычисляется.
Но проблема в том, что Chrome браузер ожидает выполнения скрипта, и пока он добавляет таблицу стилей в заголовок, но фактически не загружает ее, и следовательно document.stylesheets
не обновляется!
Эта проблема только с chrome. Firefox загружает его мгновенно, как и ожидалось!
Я создал образец кода, чтобы легко продемонстрировать проблему
<!DOCTYPE html>
<head></head>
<body>
<p id='status'></p>
<button onclick="updateStatus()">updateStatus</button>
<script>
const link = document.createElement('link')
link.rel = 'stylesheet'
link.href = './style.css'
document.head.appendChild(link)
updateStatus()
function updateStatus() {
document.getElementById('status').innerHTML = document.styleSheets.length;
}
</script>
</body>
</html>
Попробуйте открыть этот вопрос в chrome и Firefox. Если вы запустите фрагмент в Chrome, он увеличится на единицу, что означает, что CSS будет загружен позже. С другой стороны, значение Firefox не меняется, означает, что сначала загружено CSS.
Как я могу заставить chrome или любой другой браузер сначала загрузить CSS, а затем продолжить JavaScript Выполнение?
Я попытался прикрепить событие onload
(также предлагается здесь ) в таблицу стилей, и оно работает, но мой код большой и многоцелевой. Я не могу разделить его на части до CSS и после CSS!