Настройка грузится быстро: список пользователей ЛК из кэша; морфинг — якорная привязка прокрутки
1) Страница «Настройка» висела до 10 с, когда ЛК ЕСИА Финанс медленный/недоступен: setupData синхронно тянул список пользователей из ЛК (lkUsersForSetup, таймаут 10 с). Теперь список берётся из кэша мгновенно, обновляется в фоне с коротким таймаутом (3 с); при недоступном ЛК показывается сохранённый список с пометкой. Страница больше не ждёт ЛК. 2) Морфинг карточки: добавлена якорная привязка — запоминаем верхний видимый блок и после обновления корректируем прокрутку, чтобы при изменении высоты карточек выше обзора вид не подпрыгивал (устраняет «прыгнула чуть выше»). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -893,9 +893,14 @@ button.dq-link, .dq-link { background:none !important; border:0 !important; padd
|
||||
.then(function(r){ return r.ok ? r.text() : Promise.reject(); })
|
||||
.then(function(html){
|
||||
if (dirty || (window.bjSelecting && window.bjSelecting())) return; // правит форму или выделяет — не трогаем
|
||||
// Якорь: верхний видимый блок — чтобы при изменении высоты карточек выше обзора
|
||||
// вид не «подпрыгивал». После морфинга вернём этот блок на то же место по вертикали.
|
||||
var anchor = null, aTop = 0, cards = document.querySelectorAll('main .card, main aside');
|
||||
for (var ci = 0; ci < cards.length; ci++) { var r = cards[ci].getBoundingClientRect(); if (r.bottom > 0) { anchor = cards[ci]; aTop = r.top; break; } }
|
||||
var doc = new DOMParser().parseFromString(html, 'text/html');
|
||||
bjMorphKids(document.querySelector('main'), doc.querySelector('main'));
|
||||
if (window.bjInitCopyBars) window.bjInitCopyBars();
|
||||
if (anchor && anchor.isConnected) { var d = anchor.getBoundingClientRect().top - aTop; if (d) window.scrollBy(0, d); }
|
||||
})
|
||||
.catch(function(){})
|
||||
.then(function(){ bjRefreshing = false; });
|
||||
|
||||
Reference in New Issue
Block a user