два одинаковых скрипта с таймером на одной странице
Здравствуйте. Прошу сильно не пинать, поскольку я писал на 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 |
Часовой пояс GMT +3, время: 10:21. |