Любые подсказки о том, как «ajaxify» веб-сайт таким образом?

Мы создали веб-сайт с разными страницами, и некоторые из этих страниц имеют функции, которых нет на других страницах. Например: страница галерей использует jQuery Colorbox для открытия фотографий. Таким образом, некоторые страницы загружают некоторые плагины jQuery, а некоторые другие страницы — нет (страница «О нас» не нуждается в плагине Colorbox).

Теперь клиент попросил нас разместить постоянный аудиоплеер в верхней части страницы. У нас есть две альтернативы: использование фреймов (очень плохо!) или использование ajax-вызовов для обновления контента и History API для обновления истории URL/браузера.

Хорошо, мы прикрепили событие клика к ссылкам. Событие запрашивает новую страницу с помощью ajax, а затем содержимое страницы заменяется. Проблема в следующем: а файлы js/плагины jQuery? Когда загружаются js-файлы запрошенной страницы, функция $(document).ready(); событие уже запущено.

Кроме того, некоторые страницы могут содержать не внешний javascript, например

<script type="text/javascript">
...some code here...
</script>

Любые подсказки о том, как сделать это лучше всего? Спасибо!


person Rodrigo Balest    schedule 20.09.2013    source источник
comment
Аудио на сайтах. Бу. Переписывание всего сайта для поддержки того, что раздражает. Двойное бу.   -  person random_user_name    schedule 21.09.2013
comment
Не уверен, что понял вашу проблему там. Какие ссылки нажимаются? что за новый контент и где? а что не работает?   -  person Lyth    schedule 21.09.2013
comment
Lyth, Ссылки я имею ввиду внутренние навигационные ссылки на сайте, как ссылки главного меню. Новый контент — это контент страницы, на которую указывает ссылка. И, cale_b, я с тобой согласен, но клиент попросил, так что...   -  person Rodrigo Balest    schedule 21.09.2013
comment
Нашел еще один вопрос с интересными ответами: stackoverflow.com/questions/2238030/ Этот ответ особенно кажется очень хорошим: stackoverflow.com/a/8125920/919933   -  person Rodrigo Balest    schedule 05.02.2014


Ответы (1)


Внешние файлы JS должны быть загружены один раз в родительский файл, чтобы все зависимости были удовлетворены, когда срабатывает обратный вызов успеха ajax.

Ex:

$.get('/someUrl',function(newHtml){

  //process the newly fetched html
  $("#someParent").html(newHtml);

  //apply whatever JQuery plugins you need at this point.
});
person TGH    schedule 20.09.2013