Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.08.2014, 00:06
Новичок на форуме
Отправить личное сообщение для link_link Посмотреть профиль Найти все сообщения от link_link
 
Регистрация: 25.08.2014
Сообщений: 3

два одинаковых скрипта с таймером на одной странице
Здравствуйте. Прошу сильно не пинать, поскольку я писал на PHP и не ожидал что столкнусь с JS, но вот пришлось, а в JS я вообще не шарю. Нужно быстро решить проблему, просто нет времени читать учебник. Помогите, пожалуйста.
Суть проблемы: нужно создать на JS систему оповещений о личных сообщениях. Нашёл в Сети соотв. JS код вывода сообщений, скопипастил, всё работает. Но сообщений два вида - от администрации и от других юзеров, следовательно, реакция на нажатие кнопок тоже разная. Страница PHP выводит JSON-переменную funcflag, которая и определяет тип сообщения -админ или юзер. Попытался совместить одном яваскрипте, нихренашечки у меня не получилось(. Тогда сделал 2 одинаковых скрипта - один администрация, второй - юзеры. Скрипт юзеров подключён к странице вторым по очерёдности.
Даже когда должен сработать ТОЛЬКО второй скрипт, ВМЕСТО него работает только который подключён первым. Пробовал через noConflict - тоже только один работает, на это раз второй а не первый.
Подскажите, что именно тут нужно сделать уникальным, что вообще делать?
setInterval('monitor();', 5*1000);
function monitor(){
//ЗДЕСЬ В АЯКСЕ ЗАПРАШИВАЕМ PHP СТРАНИЦУ, И ПОЛУЧАЕМ ОТ НЕЁ ЧЕРЕЗ JSON ПЕРЕМЕННУЮ funcflag
..........
  if(funcflag=='message_admin'){//ОПРЕДЕЛЯЕМ ОТ ЮЗЕРА СООБЩЕНИЕ ИЛИ ОТ АДМИНИСТРАЦИИ.
     window.dialogs.confirm.show()}//ВЫВОДИМ СОБСТВЕННО ДИАЛОГ

  else {throw "stop";} // ПРОБОВАЛ НАСИЛЬНО ОСТАНАВЛИВАТЬ ПЕРВЫЙ СКРИПТ, КОГДА ДОЛЖЕН РАБОТАТЬ ВТОРОЙ 
}

//////////////////////////////
//НАЧАЛО ЧУЖОГО КОДА			
//////////////////////////////
(function (parentObject) {
    if (parentObject.dialogs)
        return;
    //////////////
	
    ////////////////////////////////////////////////
    // Создаем общий интерфейс для создания диалога
    ////////////////////////////////////////////////
    parentObject.dialogs = {
        form: function ( _class, _innerHtml, _dialogOptions) {
            var dialog = {},
				/* уникальный класс для возможности по селектору найти нужное окно */
                className = 'custom-dialog-' + Math.round(Math.random() * 100000),
				/* объединяем дефолтные параметры с пользовательскими _dialogOptions */
                dialogOptions = $.extend(true, {
                    autoOpen: false,
                    modal: true,
                    height: 150,
                    width: 400,
                    resizable: false
                }, _dialogOptions || {}),
				/* диалог, в котором будет создано всплывающее окно */
                dialogHtml = $('<div id="countdown"/>');//ID дива ДОБАВИЛ Я, НЕ ПОМОГЛО

			/* добавляем div в тело документа */
            $('body').append(dialogHtml);
			/* присваиваем уникальный класс */
            dialog.uniqClassName = className;
			/* добавляем уникальный класс */
            dialogHtml.addClass(className);
			
			/* создаем всплывающее окно */
            dialog.jDialog = $(dialogHtml).dialog(dialogOptions);

			/* если задан пользовательский класс, то добавляем в общее окно */
            if (_class)
                dialog.jDialog.addClass(_class);

			/* Удаляем стандартную шапку класса */
            dialog.jDialog.parent().find('.ui-dialog-titlebar').remove();

			/* заполняем содержимое html шаблоном окна */
            dialog.jDialog.append(_innerHtml);

            return dialog;
        }
	}
	
	// Формируем диалоги 
    $(document).ready(function () {
       
        ////////////////////////////////////////////////
        // Окно подтверждения
        ////////////////////////////////////////////////				

		/* Создаем окно подтверждения */
		
		
		    var str=('<div class="custom-dialog-confirm-container">' +
                    '<div class="custom-dialog-confirm-container-title">' +
                    '</div>' +
                    '<div class="custom-dialog-confirm-container-text">' +
                    '</div>' +
                    '<div class="custom-dialog-confirm-container-btn-container">' +
                        '<button type="button" class="custom-button-cancel">Позже</button>' +
                        '<button type="button" class="custom-button-apply">Связаться с администрацией</button>' +
                    '</div>' +
                '</div>');


parentObject.dialogs.confirm
        = parentObject.dialogs
            .form('custom-dialog-confirm',str);

		/* Определяем функцию показа */
parentObject.dialogs.confirm.show = function (title, msg, onHide, onApply) {


            var self = this;
			// Если есть обработчик на закрытие, то добавляем его
            if (typeof (onHide) === 'function') {
                hideFunc = function () {
                    self.jDialog.off('dialogclose', hideFunc);
                    delete hideFunc;
                    hideFunc = null;
					onHide();
                };

                self.jDialog.on('dialogclose', hideFunc);
            };

            // Удаляем предыдущий обработчик подтверждения
            self.jDialog.find('.custom-button-apply').unbind('click');
            self.jDialog.find('.custom-button-apply').click(function () {
                self.jDialog.dialog('close');
				
					/// ВЫВОДИМ АЛЕРТ
				alert('Вы будете перенаправлены к администрации');

                if (typeof (onApply) === 'function')
                    onApply();
            });

			// Вставляем заголовок и текст окна
            self.jDialog.find('.custom-dialog-confirm-container-title').html(title ? title : 'Подтверждение');
            self.jDialog.find('.custom-dialog-confirm-container-text').html(msg ? msg : 'Вы действительно хотите выполнить данную операцию?');

            self.jDialog.dialog('open');
       

		/* Определяем функцию скрытия */
        parentObject.dialogs.confirm.hide = function () {
			
            var self = this;
            self.jDialog.dialog('close');
        };

		/* Определяем обработчик для кнопки Отмена */
		self.jDialog.find('.custom-button-cancel').unbind('click');
		//УДАЛЯЕМ ПРЕДЫДУЩИЙ ОБРАБОТЧИК (ЧТОБЫ НЕ БЫЛО ПОВТОРНОГО АЛЕРТА)
        parentObject.dialogs.confirm.jDialog.find('.custom-button-cancel').click(function () {
					/////////////ЮЗЕР НАЖАЛ КНОПКУ ОТМЕНА, 
					
            parentObject.dialogs.confirm.hide();
        });
}//конец блока функции confirm.show
});//конец функции document ready
})(window);//конец функции parent object

Последний раз редактировалось link_link, 26.08.2014 в 01:47.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько одинаковых форм обратной связи на одной странице stalex jQuery 14 24.04.2018 17:25
Не работают два JS скрипта вместе на одной странице 5art@mail.ru Events/DOM/Window 44 15.07.2012 18:51
jCarousel - два раза на одной странице new jQuery 0 22.04.2010 22:20
Помогите чайнику. Два одинаковых скрипта на странице. VASH132 Общие вопросы Javascript 6 28.01.2010 15:42
Два одинаковых сценария на одной странице Genetics Общие вопросы Javascript 7 12.07.2009 01:46