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

Как правильно настроить код JS?

Имеется код js обновления информации чата

function online() {
			$.ajax({
				url:  	'/engine/chat.php',
				type:  	'post',
				cache: 	false,
				data:  	'chat_f=click&online=true',
				success:  function(response){elUp('.users-chat-online');},
			});
		};	

		function chat_load(key) {

			$.ajax({
				url: '/engine/chat.php',
				method: 'post',
				data: "chat_f=click&load="+key,
				cache: false,
				success: function(data){
					var json = jQuery.parseJSON(data);
					if (json.status == 'load') {
						if (json.text != 'false') {
							$('.chat').attr('key', json.text);
							elUp('.chat');
						} else{return;}
					}
				}
			});
		}


Функция elUp обновляет фоново страницу и данные появляются

и есть код перехода по ссылкам сайта

$('a[href]').each(function () {
		var href = this.href;
		if ($('a[href]').attr('target') == "_blank") {var target = '_blank';}

		$(this).removeAttr('href').css('cursor', 'pointer').click(function () {
			if (href.toLowerCase().indexOf("#") >= 0) {} 
			else {
				if (target == '_blank') {window.open(href, '_blank');} else {
					$(document.body).load(href);
					location.href = "#" + href;
					loc = location.href.split("#");
					window.history.pushState({}, document.title, loc[1]);
				}
			}
		});
	});


Работает отлично, кроме стрелок вперед назад, но основная проблема это когда пользователь перешел с чата на другую страницу, код обновления все равное продолжает свою работу, есть ли возможность от этого избавиться, сохраняя принцип перехода по сайтам без перезагрузки сайта?
  • Вопрос задан
  • 81 просмотр
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
@MrColdCoffee
web
Для решения вашей проблемы необходимо отменять интервал при переходе на страницу и задавать его заново.

Для этого поместите setInterval(function(){online();}, 5000); и setInterval(function(){update();}, 2500); в переменные

например
var onlineInterval = setInterval(function(){online();}, 5000); 
var updateInterval =setInterval(function(){update();}, 5000);


И вызывайте для отмены

clearInterval( onlineInterval );
clearInterval( updateInterval);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы