@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).

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

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

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

Войти через центр авторизации
Похожие вопросы