Решил написать сайт только на Ajax-подгрузке контента. Сразу вспомнил про Pjax. О! Решение найдено - подумал я, но не тут-то было...
Не вижу профита менять Pjax'ом 95% контента (т. е. одного глобального блока #content в котором все содержимое сайта). Не нашел возможности Pjax'ом менять несколько блоков (вверху #header, в центре #div1 и #div2, в левой менюшке #ul4, в #footer блок #div101).
Написал свой тестовый Pjax. Передаю JSON с сервера. В нем структура и многое другое, что нужно менять. Логика простая... есть переменная JSON['body']['header'] - в меняю HTML у элемента с ID = header. Но тут дело дошло до скриптом! Тут у меня начинаются вопросы.
Я удаляю все скрипты со страницы путем $('#script_id').remove(). Подключаю новые. В подключенных новых скриптах (в новом наборе скриптов присутствуют и те же самые скрипты из старого набора), срабатывает событие document.ready. Самое то, ведь новые скрипты могут что-то "новое". Но навешиваются и повторные обработчики из стартового набора скриптов. Как? Я ведь удалил скрипты, функции там далеко не анонимные, но они продолжают работать, даже после удаление скрипта из DOM. Теперь даже получается, что мои ссылки стали 2 раза "ходить" за новым контентом, а потом и 3 раза...
Есть какие-нибудь идея для решения? Может как-то нужно иначе удалять или чистить "старые" события и скрипты?
Кто-нибудь слышал об SPF? Ютуб использует. Но проблема со скриптами все же остается актуальной.
Как же реализовать правильную замену старых скриптов на новый набор? Чтоб не было двойных событий и всяких конфликтов.
Плагин pjax для jquery https://github.com/defunkt/jquery-pjax, сам пользуюсь будут вопросы пиши.
Обновляет только тот контейнер который ты указываешь. Отлично идет в купе с Zend, YII и др. framework
В том и беда, что pjax обновляет только один блок. По возможности мне бы хотелось как-то менять частично элементы страницы. Будь то главное меню, боковое меню, футер или же некий div#messages.
Ко всему прочему еще и "правильная" обработка скриптов, подтягивание новых и удаление старых обработчиков. Проанализируйте youtube.com. Посмотрите в Firebug работу страниц. Очень интересно, почти то, что надо. Но с SPF возникает ряд других проблем.
Youtube.com - вот вам пример. Переключение по меню (Рекомендации, Мой канал, Мои подписки...). И другие ссылки не из этого меню. Потыкайтесь. В целом все там понятно, но вот не задача, ну youtube не подгружаются скрипты. Точнее они подгружаются, но одни и те же. Меня это не устраивает, так как в Ленте новостей и О проекте совершенно разные скрипты используются. Есть решение - загрузить из все одним разом и все. Но это самый крайний вариант.
Вячеслав: нет, не удалось. Кроме как клеить все скрипты и один раз их загрузить и больше не перезагружать. Либо, если их надо перезагрузить, то делать обычный переход по ссылке.