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

Как запускать javascript каждый раз с прелоадером?

Есть модуль для opencart "всплывающая корзина"
Весь код работает, но не всегда отображает нужное с первого раза.
Чтобы было понятней:
добавляем товар в корзину -> открывается корзина, а она пуста -> заходим в корзину ещё раз и товар уже отображается как добавленный.
Нужно, чтобы корзина обновлялась с первого раза, и чтобы стили не бегали пока загружается код, покупателю показывался прелоадер( что мол идёт обработка запроса)
Я не умею работать с javascript кодом, поискал в интернете заготовок не нашёл.
Вот код js этого модуля
(function($){

	var modPopupCart = {};

	// URI для загрузки содержимого корзины
	var popupCartUri = 'index.php?route=module/popupcart/load';
	// URI страницы оформления заказ
	var cartCheckoutUri = 'index.php?route=checkout/cart';

	// div
	var popupCartContainer = '#popupcart';
	var popupCartTitle = 'div.title';
	var popupCartContent = '#popupcart .popupcart_content';

	/*
	* Инициализация контейнера
	*/
	modPopupCart.init = function(config){
		var defConf = {};
		var $this = this;

		defConf = {
			draggable : "1",
		};

		config = $.extend({},defConf,config);

		// Настройка эффекта draggable
		if( parseInt(config.draggable) == 1 ){
			$(popupCartContainer).draggable({ handle: popupCartTitle });
		}

		$(popupCartContainer).disableSelection();
		$(popupCartContainer).resizable({
			maxHeight: 800,
			maxWidth: 800,
			minHeight: 530,
			minWidth: 600,
			alsoResize: popupCartContent
		});
		$(popupCartContent).resizable();

		// Останавливаем дальншейшее всплытие события "click" при клике на область окна
		$(popupCartContainer).click(function(event){
			event.stopPropagation();
		});

		// по клику на область вне окна корзины закрываем окно
		$('body').click(function(){
			$this.close();
		});

		$('body').keydown(function(event){
			if(event.which == 27) { // ESC 
				$this.close();
			}
		});		
	};

	/*
	* Открытие окна корзины
	*/
	modPopupCart.open = function(){
		$(popupCartContent).load(popupCartUri,{},function(){
			$(popupCartContainer).css('top', ($(window).height()/2-$(popupCartContainer).height()/2)+ $(window).scrollTop());
			$(popupCartContainer).css('left', $(window).width()/2-$(popupCartContainer).width()/2);
			$(popupCartContainer).css("position","absolute");
			$(popupCartContainer).css("z-index","9999");
			$("#pop_back").last().addClass("pop_back");
			$(popupCartContainer).show();	
		});
		
		return false;
	};

	/*
	* Закрытие окна корзины
	*/
	modPopupCart.close = function(){
		$(popupCartContainer).hide();
		$(popupCartContent).empty();
		$("#pop_back").removeClass("pop_back");
		return false;
	};

	/*
	* Удаление товарной позиции
	*/
	modPopupCart.removeProduct = function(productId){
		if(getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
			location = cartCheckoutUri + '&remove=' + productId;
		} else {
			$(popupCartContent).load(popupCartUri + '&remove=' + productId);
			$('#cart').load('index.php?route=module/cart&remove='  + productId + ' #cart > *');
		}
	}

	/*
	* Удаление ваучера
	*/
	modPopupCart.removeVoucher = function(voucherId){
		if(getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
			location = cartCheckoutUri + '&remove=' + voucherId;
		} else {
			$(popupCartContent).load(popupCartUri+'&remove=' + voucherId);
			$('#cart').load('index.php?route=module/cart&remove='  + voucherId + ' #cart > *');
		}
	}

	window.modPopupCart = modPopupCart;

})($);
  • Вопрос задан
  • 374 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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