Здравствуйте. Прошу сильно не пинать, поскольку я писал на 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