Недавно наткнулся на атрибут defer. На одном из сайтов его описание звучит так: "Атрибут defer откладывает выполнение скрипта до тех пор, пока вся страница не будет загружена полностью. Работает только при наличии атрибута src." На сайте w3schools чуть-чуть иначе сформулировано: "Когда присутствует данный атрибут, он указывает, что сценарий выполнится, когда страница закончит парситься". Для теста я решил запустить самую простую html-страницу, на которой только один заголовок. И подключил js-файл, который выводит несколько сообщений alert-ом. Вот код html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="1.js" defer></script>
</head>
<body>
<h1>GeekBrains</h1>
</body>
</html>
Вот код JS (всего 2 строчечки):
alert ("Hello");
alert ("Hi");
Дело в том, что в Опере и Хроме не работает у меня этот атрибут, т.е. сначала выполняется скрипт, а затем, когда оба раза вы кликнете ОК и закроются всплывающиеся окна, будет видна HTML-страница. А в IE и Firefox дело обстоит иначе: все выполняется так, как написано в спецификации: отобразилась html-страница, а затем выполняется скрипт. С чем это связано? И есть ли решение данной проблемы?




