Задать вопрос
@hrvasiliy

Как сделать сайт без перезагрузки?

Пытаюсь сделать сайт без перезагрузки страниц. Пришел к тому, что при клике по ссылке идет переход клика, далее отправляется запрос на AJAX и возвращается другая страница. Написал следующий скрипт:

$(document).ready(function(){
	$('a').click(function(){
		NProgress.start();
		NProgress.set(0.3);

		var page = $(this).attr('href');
		$('html').load(page, function(){
			$(window).load(function () {
			  NProgress.done();
			});
		});
		history.pushState(null, null, page);
		return false;
	});
});


1. Используя данный скрипт, не всегда страница генерируется без перезагрузки, то есть иногда страница перезагружается, иногда обновляется информация без перезагрузки.
2. Когда все же страница обновляется без перезагрузки, то другие элементы JS не подгружаются (если конкретней, то не работает noUiSlider + в консоли браузера выводятся ошибки, касающиеся NProgress).

Можно ли как-то решить приведенные проблемы?
  • Вопрос задан
  • 580 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
Ответ написан
Комментировать
streetflush
@streetflush
AngularJS в руки
Ответ написан
Здравствуйте. Во первых мне кажется что нужно делать preventDefault(). Во вторых вы слышали вообще о такой штуке как AngularJS? Зачем же изобретать велосипед и натыкаться на те грабли, которые разгребли уже до вас?

UPD
Да и зачем делать load всему html? А не допустим только #content? Неужели у вас на разные роуты подключаются разные библиотеки и стили?
Ответ написан
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
При перезаписи документа на новых ссылках обработчика клика еще нет, поэтому его обрабатывает сам браузер.
Так же в Вашем примере обработчики для удаленных ссылок навсегда останутся в памяти - а это утечка
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
Wanted. Москва
от 250 000 до 400 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
22 янв. 2025, в 19:19
2300 руб./в час
22 янв. 2025, в 18:00
15000 руб./за проект
22 янв. 2025, в 17:57
2000 руб./в час