Добрый день. Необходимо добавить на сайт прослушивание аудио-композиций, которое не будет обрываться при переходе между страницами. Первое, что приходит в голову - весь сайт сделать на ajax, в том числе переходы между страницами, но это переделывание работающего функционала. Прошу совета, существуют ли другой подход и решения?
Обернул код в PHP: <?php Pjax::begin(); ?> // some code <?php Pjax::end(); ?> Возникла странная ситуация, хотя достаточно логичная: при перемещении по истории браузера или переходе на ранее посещенные страницы перестают работать все js-обработчики. Насколько я понимаю, из-за перестройки DOM. Изначально JavaScript подключался так: PHP: <?php $js = '$(function(){alert(123);})'; $this->registerJs($js, $this::POS_END); ?> Существуют ли способы повторного включения JavaScript в обработку страницы после её перестройки посредством pjax?
Да, вешать обработчики на вышестоящие элементы. У вас всё равно jQuery, так что так делается: Код (Javascript): $("body").click(".element-class", function () {/* ... */}); --- Добавлено --- Вместо body можно любой элемент, который не затирается пиджаком при работае
Лучше уж через делегирование тогда: Код (Javascript): $(document).on('click', '.element-class', function() {/* ... */});
@Artur_hopf Точно, давно не писал на jQuery, забыл. Сейчас всё больше на ангулярке фронты делаю на работе @118_64 См. ответ @Artur_hopf, я ошибся.
Возникла интересная ситуация при работе с Pjax: страница А, на которую ставятся обработчики, корректно отрабатывает скрипты, если изначально загружали её, затем переходили на страницу Б, а потом возвращались на А. Но если изначально загружать страницу Б, то страница А скрипты не видит, за исключением скриптов, размещенных внутри dropDownList и внутри Html::script Убил на это почти два дня, проблему решить не смог. Кто-то может подсказать решение?
include страницу S на которой будут скрипы которая будет всегда подключатся с остальными страницами))
спасибо! ) Перенёс js-скрипты со всех страниц в один общий и подключил его за пределами pjax. Всё заработало как нужно.
ну все таки бездумно делать это не нужно, только общие скрипты объединяйте. Когда все в одном месте, потом тяжело это обслуживать.