Глюк в админке 1.4.х, браузер Хром

Добрый день.

Со вчерашнего дня на всех сайтах версии 1.4.х (конкретно — 1.4.0, 1.4.7, 1.4.8, другие не знаю, у меня их нет) в админке сайта куда не ткни, выскакиваю такие окна с предупреждениями




Выскакивают по очереди — одно закрыл — выскочило другое, другое закрыл — выскочило третье. Пока их все не позакрываешь, ни одну операцию выполнить невозможно — ни сохранить, ни закрыть, ни куда-то просто перейти



И это на всех сайтах, и что на локалке, что на хостинге.

Сайты версии 1.2.2 — глюка нет (версии ниже не проверял).

А в браузере Мазила — глюков нет, все замечательно (другие браузеры не проверял).

Подскажите, что это может быть и как с ним бороться.
Где эти окна можно отключить?

Спасибо.

P.S. Хром очистил всю историю — не помогло, в безопасном режиме тоже глючит.

28 комментариев

avatar
1.4.3 тоже
avatar
вчера и сегодня 1,4.8 на двух сайтах таже фигня!
avatar
Да, хром хромонул, я им не пользуюсь, но проблему подтверждаю. В консоли хрома ошибки такие:
Uncaught Error: Unknown message type: undefined
    at onmessage (VM211 addon-compressed.js:1075)
modx.min.js?v=1551775231:1 Timer 'load-tab' does not exist
page.firstElementChild.onload @ modx.min.js?v=1551775231:1
avatar
Кто нибудь решение нашел???
avatar
2.0.0 alpha — такая же хрень
  • CCC
  • 0
avatar
if (!evo.checkConnectionToServer()) {
message = evo.lang.error_internet_connection;
setTimeout(function() {
alert(message);
}, 10);
evt.returnValue = message;
timerForUnload = setTimeout('stopWorker()', 100);
return message;
}
Проблема в этом
это 394 строка в main.js
Комментарий отредактирован 2019-04-13 17:12:31 пользователем sahar-08
avatar
Выкинул — работает нормально. Но это, наверное, очень радикальное решение(( А как поправить нормально?
avatar
А у 1.4.0 и файла такого нет, или где-то в другом месте, или функция в другом файле, пытаюсь найти — пока безуспешно((
avatar
на счет 1.4.0 не могу сказать точно, у меня все проекты уже давно на 1.4.8 =(;
avatar
а у меня еще парочка осталась(( И парочка на 1.2.2. Работают и ладно, после 1.2.2 эти обновления чуть ли не каждый месяц выходили — не угнаться, и не всегда новое не значит лучшее.

Интересно, что и в 1.2.2 тоже нет main.js, но он не глючит, а 1.4.0 — глючит.
avatar
В 1.2 не было проверки ответа сервера.
в 1.4.0 этот код находится в header.inc.php на 430 строке.
В новых версиях фиксят баги и утсраняют потенциальные уязвимости, поэтому в веб разработке новое всегда лучше =))
avatar
Спасибо!
А у меня в 497, выглядит так, закомментировал — не глючит.
function checkDirt(evt)
{
evt = evt || window.event;
var message = '';
if (!evo.checkConnectionToServer()) {
message = '<?= addslashes($_lang['error_internet_connection']) ?>';
setTimeout(function() {
alert(message);
}, 10);
evt.returnValue = message;
timerForUnload = setTimeout('stopWorker()', 100);
return message;
}
if (documentDirty === true) {
message = '<?= addslashes($_lang['warning_not_saved']) ?>';
evt.returnValue = message;
timerForUnload = setTimeout('stopWorker()', 100);
return message;
}
}
avatar
Пока разбираться времени нет, поэтому просто закоментил, но функция checkConnectionToServer находится на 263, строке.
Все это связано с обновой chrome, которая вышла, как я понимаю, вчера.
Комментарий отредактирован 2019-04-13 19:25:11 пользователем sahar-08
avatar
Тоже такое-же поведение. Хотя в консоле хрома сейчас нет ошибок.
Комментарий отредактирован 2019-04-13 17:23:41 пользователем Redduck
avatar
Та же хрень, думал дело в хостинге или в интернете, а тут вот оно как…
avatar
Полдня угробил чтобы понять в чём дело и попытки обойти проблему…
А проблема у меня оказалось 2!
1. Хром начиная с 73 версии запретил делать синхронные ajax-запросы, ибо возвращается в синхронном запросе функции evo.checkConnectionToServer это, но никуда не выводится ибо там try/catch:
Failed to execute 'send' on 'XMLHttpRequest': Failed to load '[site_host]/manager/includes/version.inc.php?time=xxx': Synchronous XHR in page dismissal.
2. Переписал на асихронный запрос, пытался настроить заголовки, отключал флаги Хрома и прочее, но также введённая жесткая политика CORS/CORB с той же 73 версии выдавала в ответ xhr.readyState = 1 и xhr.status = 0. Ни в какую через асинхронный запрос не захотело взлетать!

Собственно, не работает функция checkConnectionToServer, которая (как я понял) банально проверяет доступность сайта, дёргая файлик version.inc.php и проверяя, что он дёрнулся с нормальным статусом.
В итоге просто сделал return true из checkConnectionToServer, чтобы checkDirt(evt) вообще не выводила сообщение о недоступности сервера, но и вариант полностью закомментировать подходит!

Чем это грозит? Тем что внесённые через админку данные могут сделать вид, что отправились на сервер, а на самом деле вы их потеряете (но это в случае, если сервер будет действительно недоступен или по дороге что-то произойдёт с запросом).
Комментарий отредактирован 2019-04-13 22:07:51 пользователем EGO
  • EGO
  • +1
avatar
я думаю что можно переписать version.inc.php, Чтобы он возвоащал алерт, если что-то пойдет ни так.
avatar
version.inc.php возвращает пустоты — это просто файл, который дёргается аяксом и если он доступен — значит и сайт доступен. Переписывать нужно main.js!
avatar
+1!
avatar
Ребята, пока нет решения или обновления проблемы?
  • qsl
  • 0
avatar
Временно может помочь:
Плагин с любым названием со следующим кодом
$e = $modx->event;
if ($e->name == 'OnManagerMainFrameHeaderHTMLBlock') {
	$e->addOutput('<script>document.addEventListener(\'DOMContentLoaded\', 
function() {evo.checkConnectionToServer = function() {return true}});</script>');
}

Вешаем на событие
OnManagerMainFrameHeaderHTMLBlock
avatar
Уточните пожалуйста куда вешать — под этим именем категория, в котором 12 событий, смотрел версии 1.4.7 и 1.4.8
avatar
Возможно, вы где-то не там ищете. Вот скрин, который может вам помочь
avatar
Не доглядел просто(( название у события длинное и оно у меня съехало (монитор в ноутбуке небольшой.
Таблетка помогла, спасибо.
avatar
Огромное спасибо!
avatar
Попробовал этот плагин на версии 1.4.0 вылетела ошибка Fatal error: Call to undefined method SystemEvent::addOutput() in /home/… и теперь в админке ничего не работает, пробовал откатить базу не помогло.
avatar
После отката базы удалите файлы /assets/cache siteManager.php siteCache.idx.php
avatar
Вариант решения номер 2 (тоже временный)
Заменить файл main.js на тот, что здесь. Путь к нему увидите в папке.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.