Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Посмотрите на веб окна (https://javascript.ru/forum/project/7250-posmotrite-na-veb-okna.html)

limonad 16.02.2010 21:26

Кое-что еще подкрутил. У меня стало быстрее. А как у вас? Дам ссылку еще раз, извините : http://webokna.blogspot.com/

vflash 16.02.2010 23:03

ненадо никакого display:none итд. скорости вполне будет хватать.
перед началом перемещения нужно на весь экран растянуть прозрачный блок. это сразу решит некоторые проблемы: перемещением курсора над iframe, flash итд. через негоже можно задавать сursor. в IE будет лучше работать, дергаться перестанет.

PeaceCoder 17.02.2010 00:35

Цитата:

Сообщение от limonad
У меня стало быстрее.

Вот это уже другое дело.

Мараторий 17.02.2010 00:48

limonad,
А если вернуть прозрачность? Тоже тормоза будут?

limonad 17.02.2010 10:28

Сначала я больше уделил внимания на анализ производительности именно при движении. Использовал плагин dynaTrace. Там нашел пару моментов, которые можно было оптимизировать.

Например, для определения состояния и координат мыши использовалась дополнительная кроссбраузерная функция навеянная примером из одной статьи на этом сайте. Так вот, обнаружилось, что лучше ее не использовать, потому что происходило нерациональное обращение к DOM. А это занимает, пусть и небольшое, но время. На каждое обращение к любому свойству события от мыши мы лезем в DOM. Поэтому количество этих обращений надо минимизировать. Плюс сам вызов дополнительной функции занимает какое-то время. В итоге, скорость исполнения именно этого кусочка значительно выросла.

Потом одолжил у соседа древний заброшенный и запыленный годами ноутбук со 128ОЗУ, на котором голая винда еле дышит, и увидел, что все эти телодвижения на него практически не повлияли.

Сделал тестовую страницу, на которой просто двигал свое окно.
Уменьшал количество элементов, упрощал css и т.д. и т.п.. Ничего не помогало. Даже один прямоугольник делал слайд шоу.

Убрал прозрачность и тени - стало чуть быстрее, но все равно тормоза жуткие были. Потом убрал фон и, оппа, побежало! Ставлю фон назад - тормоза. Дело в том, что фон нестандартный из css был, а растягивающийся фон с хитростями.

Убрал эту фишку и поставил обыкновенный фон. Бежит нормально.
Вернул прозрачность - включились тормоза, хотя на быстрых компах это не влияет. Поэтому до поры до времени решил отказаться.

К тому же vflash подсказывает, что можно вообще фрейм не прятать, надо будет попробовать. На весь экран растянуть прозрачный блок вроде хорошая идея, только боюсь, что все-таки iframe будет перехватывать это событие через прозрачный блок. Кстати, vflash, прозрачный блок - это закрашенный блок с opacity или блок без бэкграунда?

В общем, всем принимающим участие в топике БОЛЬШОЕ спасибо, каждый из вас дал мне пищу для размышлений и благодаря этому я уже вижу, что можно еще некоторые вещи оптимизировать. Каждому повышаю карму.

Kolyaj 17.02.2010 10:37

Цитата:

Сообщение от limonad
прозрачный блок - это закрашенный блок с opacity или блок без бэкграунда?

Блок без бэкграунда в ИЕ равнозначен отсутствию блока. Поэтому нужно ставить бэкграунд и делать 100%-ную прозрачность.

vflash 17.02.2010 11:18

в зависимости от браузера
style: "background-color:transparent;position:fixed;left:0px;top:0px; bottom:0px;right:0px;z-index:9999999999;"
+ (rr.IE? "_position:absolute;background-image:url('about:blank');" : ""),

для IE6 размер придется самостоятельно выставлять

я лишил вас годы удовольствия поиска оптимальных решений

ZoNT 17.02.2010 12:15

Ну вот! Стало работать намного быстрее :)

limonad 18.02.2010 21:43

vflash, спасибо. Попробовал локально, сделал по вашей схеме. Вроде хорошо, но есть неприятный момент. Когда на onmousedown ставим распахнутый div, то в Chrome и Safari срабатывает только он, а ondblclick не работает (например на иконках или на шапке окна). onclick же не работают везде, ну это в принципе можно заменить на тот же onmousedown. Как-то можно решить эту проблему (хотя-бы с ondblclick)?

limonad 22.02.2010 10:12

вопрос решен


Часовой пояс GMT +3, время: 07:21.