Доброго времени суток. Не так давно панель администрирования
modX Revolution стала зависать в бразуерах на движке
WebKit под
Windows при загрузке на страницах, на которых используются календари. А именно зависает перебор дат для генерации календаря в ExtJS (для перехода по часам используется JS метод setMinutes(60)). Поиск в Интернет привел к тому, что проблема заключается в некоем обновлении Windows. При этом проблема присутствует только при установке часового пояса в системе как
RTZ. Я тестировал на "(UTC+03:00) Волгоград, Москва, Санкт-Петербург
(RTZ 2)", "(UTC+02:00) Калининград
(RTZ 1)".
Для того, чтобы проверить, можно исполнить в консоли следующий код:
(function() {
var foo = new Date(2008,0,1,22,00,0,0);
console.log(foo);
foo.setMinutes(60);
console.log(foo);
foo.setMinutes(60);
console.log(foo);
})();
Результат:
Tue Jan 01 2008 22:00:00 GMT+0300 (RTZ 2 (зима))
Tue Jan 01 2008 23:00:00 GMT+0300 (RTZ 2 (зима))
Tue Jan 01 2008 23:00:00 GMT+0300 (RTZ 2 (зима))
Я пришел к нескольким решениям:
- Использовать браузер на отличном от WebKit движке
- Изменить часовой пояс в системе
- Использовать самописный плагин:
<?php
$modx->controller->addHtml('<script>(function() {
var foo = bar = new Date(2008,0,1,23,00,0,0);
foo.setMinutes(60);
if (foo === bar) {
Date.prototype.setMinutes = Date.prototype.setUTCMinutes;
}
})();</script>');
С установкой события
OnManagerPageBeforeRenderer.
Подскажет ли кто об альтернативных решениях?
[ed. note: [email protected] last edited this post 12 years ago.]