Каков приоритет выполнения javascript?
У меня есть внешний файл JavaScript, связанный блоггером. Я хочу изменить ценность в этом. (значения CSS, назначенные с помощью JavaScript)
Можно ли запустить один и тот же код в заголовке или теле с разными значениями, назначенными с помощью JavaScript? Например, CSS отдает наименьший приоритет внешним таблицам стилей CSS и назначает свойства, которые задаются внутри файла.
Есть ли в JavaScript какая-нибудь система приоритетов?
4 ответа
Это не приоритет, а порядок исполнения. Javascript не участвует в какой-либо расстановке приоритетов или не имеет ничего общего со спецификой CSS, чтобы даже нуждаться в этом.
Код Javascript выполняется в том порядке, в каком он включен в документ HTML, независимо от того, является ли он встроенным или внешним JS, хотя events
немного усложняет ситуацию, мы можем запланировать запуск кода позже для определенных событий, таких как событие load window
, Поэтому легко убедиться, что ваш код запускается после их, но если они говорят, что изменение стиля с onload
обработчик событий, тогда вы должны добавить свой код к тому же event
сам. (Порядок обработчиков событий обеспечивается в DOM3 по крайней мере в спецификации)
Но ты пробовал !important
в CSS он может переопределять встроенные стили и пригодится в некоторых сценариях, подобных этому. Но если вы можете удалить стили, используя JavaScript хорошо.
Javascript код выполняется в точке включения.
HTML-парсер
- разбирать теги
- находит JavaScript
- (необязательно) скачать javascript
- прекратить разбор HTML
- разбирать JS
- Excute JS
- возобновить разбор HTML
- находит JavaScript
- (необязательно) скачать javascript
- прекратить разбор HTML
- разбирать JS
- Excute JS
- возобновить разбор HTML
- так далее
Остерегайтесь таких вещей, как код, который привязывает себя к событиям domready, которые запускаются только после завершения загрузки документа или других событий, а затем сводятся к тому, в каком порядке они были зарегистрированы.
Существуют также такие вещи, как defer и async, которые заставляют его загружаться / выполняться в парралле при разборе (детали и поддержка могут варьироваться в зависимости от браузера). Но в большинстве сценариев без сильно модифицированных шаблонов в блогах Google секвестр, который я выложил, произойдет
JS выполняется сразу после загрузки, поэтому, поместив ваш скрипт после их (связывание с внешним файлом после или вставив его в строку), он сможет что-то изменить в первом скрипте, но он может быть выполнен к тому времени,
Вы могли бы переопределить его части, если их сценарий ждет чего-то перед запуском, например, событие DOM ready
if you have tow function with same name, one in head and another one in an external .js file and both of them write a value in <a>, the result will be from the internal one, let's look at an example
<html>
<head>
<script src="myscripts.js"></script>
<script type="text/javascript">
function test(){
document.getElementById("tester").innerHTML="Internal";
}
</script>
</head>
<body onload="test()">
<a id="tester"></a>
</div>
</body>
</html>
-------------------------------------
in myscripts.js
function test(){
document.getElementById("tester").innerHTML="external";
}
-------------------------------------
when the page run it shows:
Internal