Closed chestozo closed 9 years ago
Я помню, мы на это натыкались, но не нашёл issue про это.
/cc @doochik @edoroshenko готово
Точняк. Тоже натыкался на такое.
Получается так: отрисовались вьюшки в боксе последовательно, все хорошо, потом первая вьюшка скрывается, отрисовывается ее другой инстанс (параметры поменялись) в конце бокса, а вторая на месте — вьюшки поменялись местами визуально.
@vitkarpov ага ) там даже в коде была заметка про это :)
Следующая issue будет юбилейная )
:+1:
Есть оговорка: это может стать проблемой производительности. У нас есть метрики и мы это можем померить. Если будут проблему, то можно улучшить через дешевый compareDocumentPosition
Добавил ещё один тест.
:+1:
Нашли проблему: из-за перестановки ноды вида ломается flash баннер.
Есть вид, в нём отрендерена реклама.
Достаточно вызвать ns.page.go()
- баннер пропадает.
UPDATE 1: баннер должен находится внутри вида, а вид внутри бокса, где несколько видов.
В общем, мне уже не очень нравится этот фикс, потому что мы на пустом месте мутируем DOM http://monosnap.com/file/nkJroWXwB5QdWspBLpeAnuOpIrnezS хотя @doochik говорит, это небольшой напряг для браузера.
Я тут написал простой тест.
var div1 = document.createElement('div');
console.time('insert div');
document.body.appendChild(div1);
console.timeEnd('insert div');
console.time('reinsert div');
document.body.appendChild(div1);
console.timeEnd('reinsert div');
var div2 = document.createElement('div');
console.time('insert div twice');
document.body.appendChild(div2);
document.body.appendChild(div2);
console.timeEnd('insert div twice');
insert div - 0.02мс reinsert div - 0.002мс insert div twice - 0.02мс
Меня смущают 2 вещи: 1) лишние действия, которые никому не нужны 2) лишние мутации DOMа, которые могут привести к непредвиденным эффектам
К примеру, для такого layout (слева) вызов ns.page.go()
приведёт к такому набору действий (справа):
Вот ещё нашли проблему: в FF теряется focus после таких перестановок в DOMе. Буду думать, как ещё это решить.
Сделал другой заход на туже проблему #502
Сделал скринкаст: http://cl.ly/340V2P1k3O0X
Суть проблемы: после обновления страницы виды, которые в layout указаны как
a b
могут оказаться в последовательностиb a
.Происходит это из-за того, что обновлённая нода вида просто append-ится в box где-то тут.