(дебильный местный движок неправильно интерпретирует "@" перед "keyframes", не обращайте внимания)
setTimeout там только для того, чтобы обновлять долготу дня (и соотв. привязанную к ней анимацию) раз в сутки (он у меня, кстати, был прописан с ошибкой - setInterval(setdaylen_(),... вместо setInterval(setdaylen_,..., но дело совсем не в этом) Параметры анимации прописаны в самом верху, в св-вах стиля body (animation-duration при загрузке страницы меняется на 12 часов), и часть из них а именно animation-delay и, самое главное, [personal profile] keyframes day, переопределяется в ф-ции setdaylen, которая вызывается при загрузке и при каждом нажатии на ОК в форме. Анимация идет от полуночи до полудня (затем обратно), соотв. delay(равный кол-ву секунд, прошедших с полуночи) обязан быть отрицательным, чтобы соответствовать текущему времени.
Сейчас удалось установить следующее. Первый вызов ф-ции setdaylen (при загрущке страницы) отрабатывает корректно. Последующие порождают проблему. Хотя, снова повторяю, все передаваемые параметры верны.
Сначала [personal profile] keyframes day менялся на новый так:
if(toReplace!=-1) { //-1 ставится при загрузке страницы
var element = document.getElementsByTagName('head')[0];
if(toReplace!=-1) {
element.replaceChild(astyle, element.childNodes[toReplace]);
}
else {
element.appendChild(astyle);
toReplace = element.childNodes.length-1;
}
Казалось, что проблему создает именно replaceChild, после чего анимация начинала хрен знает почему идти быстрее. Заменил на
var element = document.getElementsByTagName('head')[0];
if(toReplace!=-1) {
element.removeChild(element.childNodes[toReplace]);
}
element.appendChild(astyle);
toReplace = element.childNodes.length-1;
Теперь анимация идет с правильной скоростью, но если нажать ОК не сразу после загрузки, а несколко часов спустя - фаза резко сбивается, как будто передан неправильный delay (больший, чем надо - т.е. вермя прыгает вперед!) в строке
document.body.style.animationDelay=-(curdate.getSeconds()+(curdate.getMinutes()-timeshift)*60+(curdate.getHours()+24)*3600)+'s';
Но он правильный, и отладочная печать это подтверждает! Абсолютно не понимаю, что происходит :(((
This account has disabled anonymous posting.
(will be screened if not validated)
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

Profile

Свободное обсуждение видеороликов

January 2023

M T W T F S S
      1
2345678
9101112131415
16171819202122
232425262728 29
3031     

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 12th, 2025 02:14 am
Powered by Dreamwidth Studios