Скрипт работает без перезагрузки страницы и получает данные через API uCoz.Достаточно начать вводить логин пользователя — проверка выполняется автоматически, а результат появляется прямо во время ввода.
Возможности скрипта:
- Проверка статуса пользователя онлайн / офлайн
- Автоматический поиск при вводе логина
- Отображение времени последнего посещения
- Определение: был пользователь сегодня, вчера или раньше
- Отмена лишних запросов при быстром вводе
- Оптимизированная работа через jQuery AJAX
- Не требует обновления страницы
Как работает:
После ввода имени пользователя скрипт отправляет запрос к API uCoz и получает текущий статус:
🟢 Пользователь в сети — отображается активный статус.
🔴 Пользователь не в сети — показывается время последнего входа.
Пример вывода:
- SamVol в сети
- или
- SamVol не в сети. Последний вход: сегодня в 23:45
Установка:
Добавьте HTML-блок с полем ввода:
HTML
Код
<input id="mas_inp1" type="text" placeholder="Введите логин пользователя">
После него вставьте данный скрипт.
Код
<script>
$('#mas_inp1').after('<span id="user_info" style="font-size:10px;"></span>');
var searchTimer, ajaxRequest;
$('#mas_inp1').on('input', function() {
var user = $(this).val().trim();
clearTimeout(searchTimer);
if (ajaxRequest) {
ajaxRequest.abort();
}
$('#user_info').html('');
if (user.length < 2) return;
searchTimer = setTimeout(function() {
getLastLog(user);
}, 500);
});
function formatLastLogin(date) {
var now = new Date();
var time = date.toLocaleTimeString('ru-RU', {
hour: '2-digit',
minute: '2-digit'
});
if (date.getDate() === now.getDate() &&
date.getMonth() === now.getMonth() &&
date.getFullYear() === now.getFullYear()) {
return 'сегодня в ' + time;
}
var yesterday = new Date();
yesterday.setDate(now.getDate() - 1);
if (date.getDate() === yesterday.getDate() &&
date.getMonth() === yesterday.getMonth() &&
date.getFullYear() === yesterday.getFullYear()) {
return 'вчера в ' + time;
}
return date.toLocaleDateString('ru-RU') + ' в ' + time;
}
function getLastLog(v) {
ajaxRequest = $.get('/api/index/8-0-' + v.replace('-', '~'), function(p) {
var _s = $(p).find('member:contains("USER_STATUS") string').text();
if (_s) {
var timestamp = $(p).find('member:contains("LOGTIMESTAMP") i4').text();
var ld = new Date(timestamp * 1000);
var res = _s == 'Offline'
? '<b>' + v + '</b> <span style="color:#992323">не в сети</span>. Последний вход: <i>' + formatLastLogin(ld) + '</i>'
: '<b>' + v + '</b> <span style="color:green">в сети</span>';
} else {
res = '<b>Пользователь не найден!</b>';
}
$('#user_info').html(res);
});
}
</script>
$('#mas_inp1').after('<span id="user_info" style="font-size:10px;"></span>');
var searchTimer, ajaxRequest;
$('#mas_inp1').on('input', function() {
var user = $(this).val().trim();
clearTimeout(searchTimer);
if (ajaxRequest) {
ajaxRequest.abort();
}
$('#user_info').html('');
if (user.length < 2) return;
searchTimer = setTimeout(function() {
getLastLog(user);
}, 500);
});
function formatLastLogin(date) {
var now = new Date();
var time = date.toLocaleTimeString('ru-RU', {
hour: '2-digit',
minute: '2-digit'
});
if (date.getDate() === now.getDate() &&
date.getMonth() === now.getMonth() &&
date.getFullYear() === now.getFullYear()) {
return 'сегодня в ' + time;
}
var yesterday = new Date();
yesterday.setDate(now.getDate() - 1);
if (date.getDate() === yesterday.getDate() &&
date.getMonth() === yesterday.getMonth() &&
date.getFullYear() === yesterday.getFullYear()) {
return 'вчера в ' + time;
}
return date.toLocaleDateString('ru-RU') + ' в ' + time;
}
function getLastLog(v) {
ajaxRequest = $.get('/api/index/8-0-' + v.replace('-', '~'), function(p) {
var _s = $(p).find('member:contains("USER_STATUS") string').text();
if (_s) {
var timestamp = $(p).find('member:contains("LOGTIMESTAMP") i4').text();
var ld = new Date(timestamp * 1000);
var res = _s == 'Offline'
? '<b>' + v + '</b> <span style="color:#992323">не в сети</span>. Последний вход: <i>' + formatLastLogin(ld) + '</i>'
: '<b>' + v + '</b> <span style="color:green">в сети</span>';
} else {
res = '<b>Пользователь не найден!</b>';
}
$('#user_info').html(res);
});
}
</script>
Подключите jQuery (если он ещё не подключён).
Добавьте код скрипта в нужное место шаблона uCoz.
После установки проверка будет работать автоматически.
Применение:
Скрипт можно использовать:
- на странице личных сообщений;
- в профиле пользователя;
- в комментариях;
- на форумах;
- в каталогах пользователей;
в любых разделах сайта uCoz, где требуется отображение статуса участников.

Комментарии (0)
Присоединиться к обсуждению
Поделитесь мнением об этом материале — комментарий появится в списке слева сразу после отправки.