Обновить

Комментарии 9

Очень благотворно. Спасибо.
>Ночная версия WebKit отныне поддерживает свойства async и defer тэга script, появившиеся в HTML5.
Вообще-то defer не изобретение html5, и давно поддерживается основными браузерами: IE, Firefox, Opera.
О чем собственно и упомянуто в конце статьи. Просто сейчас принято на различные фишки навешивать ярлык HTML5, что и сделал автор.
async тоже есть: «Delayed script Execution»
Атрибут defer был уже в HTML 4.0, то есть двенадцать лет назад.
>> А вот наличие defer скриптов гарантирует, что как они указаны, так они и будут загружаться. Их выполнение начнется после завершения работы парсера, но до появления события DOMContentLoaded.

Так они последовательно загружаться будут или выполнятся?? Я вообще не вижу особого смысла в последовательной загрузке файлов из которых состоит страница. важно только последовательность выполнения скриптов…
 var scriptref=document.createElement("script");
 ....
fileref.onreadystatechange=...
fileref.onload = fileref.onerror = ....
....
 document.getElementsByTagName("header" или "body")[0].appendChild(fileref);


Любой браузер, любая дополнительная логика.

Да async || defer чтуки хорошие, но onload прописанный текстом в коде — чтука не совсем полноценая.

Кстати а вы знали что в некоторых случаях defer является обязательным полем?
Давайте раскажу немного про это
Предистория
$(someelement).html(somehtmlWithscripts); -> Вешает ИЕ, в том числе НАМЕРТВО.
сильно зависит от загружаемого кода, но факт есть факт, четыре раза я на это дело попадал.
решается через эмуляцию, которая(имхо) работает лучше родного для jQuery html
$(".someelem").get(0).innerHTML=( data );
$.each($(".someelem script"),function(i,j){
	var src=$(this).attr('src');
	if(src){
		add_script(src,'',target);
	}
	var text=$(this).text() || this.text;
	if(text){
		add_script('',text,target);
	}
});

Если у скрипта не будет флага defer — он НЕ БУДЕТ доступен для селектора(ИЕ — 100%)
Также, по непонятным причинам в начале html блока требуется добавлять «магию» в виде пустого дива.

Примерно такиеже манипуции требуются в WebKit при $(someelement).html(somehtmlWithLinkCss); — он тупо даже не пробует загружать файлы стилей.
Пока не я не понял почему, только на одной странице такое происходит у меня.
>> Примерно такиеже манипуции требуются в WebKit при $(someelement).html(somehtmlWithLinkCss);

У вебкита есть такие траблы. ДОМ почему то не всегда обновляется если он изменен через innerHTML. Попробуйте вставлять линки на ксс стандартными дом методами (document.createElement, appendChild)
>> Примерно такиеже манипуции требуются в WebKit при $(someelement).html(somehtmlWithLinkCss);

У вебкита есть такие траблы. ДОМ почему то не всегда обновляется если он изменен через innerHTML. Попробуйте вставлять линки на ксс стандартными дом методами (document.createElement, appendChild)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации