AlexandrDP
@AlexandrDP
C#, ASP .NET MVC, WindowsPhone, Android

Запуск кода javascript

Задался вопросом, как правильно оформить код страницы, чтобы код javascript запускался после загрузки документа.
Примеры из курсов javascript/jquery говорят так.
<script>
 $(function () {
  //инициализация страницы
 });
</script>


Но если это не полноценная страница, а иногда загружается через ajax в диалоговое окно, то код «инициализация страницы» — запущен не будет. Код переделан на.
<script>
  //инициализация страницы
</script>


В этом случает все работает и при загрузке страницы как отдельно так и через ajax.

Вопрос чем чревато отказ от "$(function ()"?
  • Вопрос задан
  • 10242 просмотра
Пригласить эксперта
Ответы на вопрос 5
TROODON
@TROODON
$(document).ready(function() { // Handler for .ready() called. });
Ответ написан
VBKesha
@VBKesha
Как вариант, черевато тем, что не будет построено DOM дерево на момент выполнения сркипта. Например если скрипт будет пытатся взаимодействовать с элементами страницы которые описаны ниже скрипта, то будет облом так как на момент выполнения срипта их ещё не будет создано.
Ответ написан
@kotia
Если нужно загрузить скрипт после загрузки какой-то верстки через аякс, то можно загружать скрипт через аякс($.getScript), поместив команду загрузки в онсаксесс загрузчика верстки.
Отказ от домреди-ивентов может привести, к примеру, к невозможности привязки событий
Ответ написан
Комментировать
Mithgol
@Mithgol
Вообще-то выполнение «$(function(){});» после загрузки страницы должно приводить к немедленному исполнению внутреннего кода функции, а вовсе не отказываться работать.

Ну, например, если здесь, на Хабрахабре (очень кстати, что в коде Хабрахабра есть jQuery), из джаваскриптовой консоли браузера (вызываемой по Ctrl+Shift+K в Файерфоксе, по Ctrl+Shift+J в Хроме) выполнить код

$(function(){ console.log('Вот оно!…') });

то указанная в нём строка будет выведена в консоль. Это нетрудно проверить и убедиться.

Если у Вас какой-то код сам по себе выполняется, а внутри «$(function(){});» не выполняется, то с ним что-то не так.
Ответ написан
Комментировать
wa_Nadoo
@wa_Nadoo
Я вообще КРАЙНЕ не советую подгружать JS через AJAX. Единственный оправданный вариант — у Вас нет возможности изменять код back-end'а. Потому что это запутывает логику и приводит к веселым багам. Например в iOS 4, при подгрузке HTML c кодом <script src="http://www.google.com/adsense/search/ads.js" type="text/javascript"></script>, получите белый экран.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы