sciter, update, overflow:hidden
От: eudo Мухосранск  
Дата: 04.06.08 14:07
Оценка:
Привет. Выловил я таки почему переодически popups лагают. Нарисовал пример.

Суть примера, асинхронно что-то меняется на странице, вызывается update(true), в примере это таймер раз в секунду. В консоле видно что onSize бизейвора не вызывается, фризов нет, все ок. Теперь расскоментируем overflow:hidden;, запустим тот же пример, теперь ситуация поменялась, каждый таймерный update приводит к вызову onSize бихейвора, в котором тоже есть update, что вероятно приводит к микроколлапсу и как следствие фризам. И посмотри в консоль, когда попап активен с какой скоростью генерируется onSize.

Запускаешь пример, правая кнопка — меню, юлозишь по пунктам меню и если overflow:hidden; раскоментирован — увидишь фризы.

<html>
<head>

    <style>
        body {
            padding:0;margin:0;
//            overflow:hidden;    // <-- UNCOMMENT HERE

            prototype: sizer;
            context-menu: selector(#context_menu);
        }

        menu {
            font:normal 22px Arial;
            behavior:menu;
            flow: vertical;
            display:none; 
            margin:0;  
            padding:10px;
            min-width:max-intrinsic; width:auto;
            border:1px solid threedshadow;
            background-color: window;
            color:windowtext;
            margin:10 1px;
        }


        menu li:current
        { 
            background-color:highlight; 
            color:highlighttext;  
        }

    </style>

    <script type="text/tiscript">

        self.timer(1000, function() {
                self.update(true);
                return true;
            });

        type sizer {
            function onSize() {
                stdout.printf("onSize: rand=%s\n", rand(100));
                this.update(true);
            }
        }

    </script>

</head>
<body>
    <popup>
        <menu #context_menu>
            <li>Some item<li>Some item<li>Some item<li>Some item<li>Some item<li>Some Item
        </menu>
    <popup>
</body>
</html>
Съешь еще этих мягких французских булок...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.