We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 49158
    • 11 Posts
    Доброго времени суток. Не так давно панель администрирования 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 (зима)) 


    Я пришел к нескольким решениям:

    1. Использовать браузер на отличном от WebKit движке
    2. Изменить часовой пояс в системе
    3. Использовать самописный плагин:
    <?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.]