Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2015, 16:07
Аспирант
Отправить личное сообщение для Ленча Посмотреть профиль Найти все сообщения от Ленча
 
Регистрация: 13.07.2014
Сообщений: 78

Конфликт скриптов: удвоение счетчика при работе другого скрипта
http://dorsiko.ru/novosti/50-action-dante

Нажмите на кнопку "Заказать звонок" и потом просто закройте форму.

Счетчик отобразится два раза.

Я так понимаю, появление счетчика повешено на какое-то событие, которое происходит при закрытии всплывашки. Но как это поправить идей пока нет

Скрипт счетчика
/*!
	dsCountDown v1.0
	jQuery count down plugin
	(c) 2013 I Wayan Wirka - [url]http://iwayanwirka.duststone.com/dscountdown/[/url]
	license: [url]http://www.opensource.org/licenses/mit-license.php[/url]
*/
(function($){

	$.fn.dsCountDown = function(givenOptions){
		
		var ds = this;
		var refreshed = 1000,
			thread = null,
			running = false,
			left = 0,
			decreament = 1,
			interval = 0,
			
			seconds = 0,
			minutes = 0,
			hours = 0,
			days = 0,
			
			elemDays= null,
			elemHours= null,
			elemMinutes= null,
			elemSeconds= null;
			
		
		var defaults = {
			startDate: new Date(),		// Date Object of starting time of count down, usualy now (whether client time or given php time)
			endDate: null,				// Date Object of ends of count down
			
			elemSelDays: '',			// Leave blank to use default value or provide a string selector if the lement already exist, Example: .ds-days
			elemSelHours: '', 			// Leave blank to use default value or provide a string selector if the lement already exist, Example: .ds-hours
			elemSelMinutes: '',			// Leave blank to use default value or provide a string selector if the lement already exist, Example: .ds-minutes
			elemSelSeconds: '',			// Leave blank to use default value or provide a string selector if the lement already exist, Example: .ds-seconds
			theme: 'event_countdown_boxes',				// Set the theme 'white', 'black', 'red', 'flat', 'custome'
			titleDays: 'дней',			// Set the title of days
			titleHours: 'часов',		// Set the title of hours
			titleMinutes: 'минут',	// Set the title of minutes
			titleSeconds: 'секунд',	// Set the title of seconds
			
			onBevoreStart: null,		// callback before the count down starts
			onClocking: null,			// callback after the timer just clocked
			onFinish: null				// callback if the count down is finish or 0 timer defined
		};
		
		var options = $.extend( {}, defaults, givenOptions );
		
		if (this.length > 1){
			this.each(function() { $(this).dsCountDown(givenOptions) });
			return this;
		}
		
		var init = function(){
			
			// Init element
			if(! options.elemSelSeconds){			
				ds.prepend('<div class="ds-element ds-element-seconds">\
							<div class="ds-element-value ds-seconds">00</div>\
							<div class="ds-element-title">'+ options.titleSeconds +'</div>\
						</div>');
				elemSeconds = ds.find('.ds-seconds');
			}else{
				elemSeconds = ds.find(options.elemSelSeconds);
			}
			
			if(! options.elemSelMinutes){
				ds.prepend('<div class="ds-element ds-element-minutes">\
				            <div class="ds-element-value ds-minutes">00</div>\
							<div class="ds-element-title">'+ options.titleMinutes +'</div>\
						</div>');
				elemMinutes = ds.find('.ds-minutes');
			}else{
				elemMinutes = ds.find(options.elemSelMinutes);
			}		
			
			if(! options.elemSelHours){
				ds.prepend('<div class="ds-element ds-element-hours">\
							<div class="ds-element-value ds-hours">00</div>\
							<div class="ds-element-title">'+ options.titleHours +'</div>\
						</div>');
				elemHours = ds.find('.ds-hours');			
			}else{
				elemHours = ds.find(options.elemSelHours);
			}
			
			if(! options.elemSelDays){
				ds.prepend('<div class="ds-element ds-element-days">\
							<div class="ds-element-value ds-days">00</div>\
							<div class="ds-element-title">'+ options.titleDays +'</div>\
						</div>');
				elemDays = ds.find('.ds-days');
			}else{
				elemDays = ds.find(options.elemSelDays);
			}
			
			ds.addClass('dsCountDown');
			ds.addClass(options.theme);
			
			// Init start and end
			if(options.startDate && options.endDate){
				interval = options.endDate.getTime() - options.startDate.getTime();
				if(interval > 0){
					var allSeconds = (interval / 1000);
					var hoursMod = (allSeconds % 86400);
					var minutesMod = (hoursMod % 3600);
					
					left = allSeconds;
					days = Math.floor(allSeconds / 86400);
					hours = Math.floor(hoursMod / 3600);
					minutes = Math.floor(minutesMod / 60);
					seconds = Math.floor(minutesMod % 60);
				}
			}

			
			start();
		}
		
		var stop = function(callback){
			if(running){
				clearInterval(thread);
				running = false;
			}
			if(callback){
				callback(ds);
			}
		}
		
		var start = function(){
			if(! running){
				
				if(left > 0){
					
					if(options.onBevoreStart){
						options.onBevoreStart(ds);
					}
				
					thread = setInterval(
						function(){
							
							if(left > 0){
								
								left -= decreament;
							
								seconds -= decreament;
								
								if(seconds <= 0 && (minutes > 0 || hours > 0 || days > 0)){	
									minutes --;
									seconds = 60;
								}
								
								if(minutes <= 0 && (hours > 0 || days > 0)){
									hours --;
									minutes = 60;
								}
								
								if(hours <= 0 && days > 0){
									days --;
									hours = 24;
								}
								
								if(elemDays)
									elemDays.html((days < 10 ? '0' + days : days));
								if(elemHours)
									elemHours.html((hours < 10 ? '0' + hours : hours));
								if(elemMinutes)
									elemMinutes.html((minutes < 10 ? '0' + minutes : minutes));
								if(elemSeconds)
									elemSeconds.html((seconds < 10 ? '0' + seconds : seconds));
								
								if(options.onClocking){
									options.onClocking(ds);
								}
								
							}else{
								stop(options.onFinish);
							}
						},
						refreshed);
					running = true;
				}else{
					if(options.onFinish){
						options.onFinish(ds);
					}
				}
			}
		}
		
		init();
		
	}
})(jQuery);
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2015, 17:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Ленча,
по кнопке заказать вы повторно грузите на страницу - эту же страницу и скрипты -- срабатывает установка таймера. скрипт таймера тут не причём.
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2015, 18:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Ленча
Но как это поправить идей пока нет
костыль
найти все строки
$('.timer_175').dsCountDown

добавить красное
$('.timer_175:empty').dsCountDown
лучше конечно исправить саму причину.
Ответить с цитированием
  #4 (permalink)  
Старый 06.07.2015, 20:53
Аспирант
Отправить личное сообщение для Ленча Посмотреть профиль Найти все сообщения от Ленча
 
Регистрация: 13.07.2014
Сообщений: 78

Костыль сработал - спасибо.

Но мне все же не совсем понятно

По кнопке вроде бы грузится iframe с формой, а не вся страница.

Есть другой вариант счетчика - с ним все нормально. Вот к примеру сейчас он стоит здесь

http://dorsiko.ru/novosti/49-action-dvernaya-furnitura

и он в кроличьем формате не размножается. Но он глючный, решили заменить на другой - а тут такой сюрприз.

UPD

Все, нашла, понятно. Постараюсь поправить.

Спасибо еще раз.

Движок не дает плюсик поставить , извините

Последний раз редактировалось Ленча, 06.07.2015 в 21:02.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конфликт событий внешних скриптов. ryslan1 Events/DOM/Window 10 11.07.2012 20:35
Автозапуск скрипта при загрузке страницы HepoH Javascript под браузер 3 31.03.2012 22:27
Вопрос по jquery. Как запретить один из скриптов при клике vuler Общие вопросы Javascript 1 07.03.2012 22:35
Срабатывание скрипта в разные моменты при загрузки в разных браузерах VitalikPro Javascript под браузер 10 29.12.2011 18:24
проблема с событиями при работе с Ext.extend slavik27 ExtJS 1 04.09.2011 13:05