Кое-что еще подкрутил. У меня стало быстрее. А как у вас? Дам ссылку еще раз, извините : http://webokna.blogspot.com/
|
ненадо никакого display:none итд. скорости вполне будет хватать.
перед началом перемещения нужно на весь экран растянуть прозрачный блок. это сразу решит некоторые проблемы: перемещением курсора над iframe, flash итд. через негоже можно задавать сursor. в IE будет лучше работать, дергаться перестанет. |
Цитата:
|
limonad,
А если вернуть прозрачность? Тоже тормоза будут? |
Сначала я больше уделил внимания на анализ производительности именно при движении. Использовал плагин dynaTrace. Там нашел пару моментов, которые можно было оптимизировать.
Например, для определения состояния и координат мыши использовалась дополнительная кроссбраузерная функция навеянная примером из одной статьи на этом сайте. Так вот, обнаружилось, что лучше ее не использовать, потому что происходило нерациональное обращение к DOM. А это занимает, пусть и небольшое, но время. На каждое обращение к любому свойству события от мыши мы лезем в DOM. Поэтому количество этих обращений надо минимизировать. Плюс сам вызов дополнительной функции занимает какое-то время. В итоге, скорость исполнения именно этого кусочка значительно выросла. Потом одолжил у соседа древний заброшенный и запыленный годами ноутбук со 128ОЗУ, на котором голая винда еле дышит, и увидел, что все эти телодвижения на него практически не повлияли. Сделал тестовую страницу, на которой просто двигал свое окно. Уменьшал количество элементов, упрощал css и т.д. и т.п.. Ничего не помогало. Даже один прямоугольник делал слайд шоу. Убрал прозрачность и тени - стало чуть быстрее, но все равно тормоза жуткие были. Потом убрал фон и, оппа, побежало! Ставлю фон назад - тормоза. Дело в том, что фон нестандартный из css был, а растягивающийся фон с хитростями. Убрал эту фишку и поставил обыкновенный фон. Бежит нормально. Вернул прозрачность - включились тормоза, хотя на быстрых компах это не влияет. Поэтому до поры до времени решил отказаться. К тому же vflash подсказывает, что можно вообще фрейм не прятать, надо будет попробовать. На весь экран растянуть прозрачный блок вроде хорошая идея, только боюсь, что все-таки iframe будет перехватывать это событие через прозрачный блок. Кстати, vflash, прозрачный блок - это закрашенный блок с opacity или блок без бэкграунда? В общем, всем принимающим участие в топике БОЛЬШОЕ спасибо, каждый из вас дал мне пищу для размышлений и благодаря этому я уже вижу, что можно еще некоторые вещи оптимизировать. Каждому повышаю карму. |
Цитата:
|
в зависимости от браузера
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 размер придется самостоятельно выставлять я лишил вас годы удовольствия поиска оптимальных решений |
Ну вот! Стало работать намного быстрее :)
|
vflash, спасибо. Попробовал локально, сделал по вашей схеме. Вроде хорошо, но есть неприятный момент. Когда на onmousedown ставим распахнутый div, то в Chrome и Safari срабатывает только он, а ondblclick не работает (например на иконках или на шапке окна). onclick же не работают везде, ну это в принципе можно заменить на тот же onmousedown. Как-то можно решить эту проблему (хотя-бы с ondblclick)?
|
вопрос решен
|
Часовой пояс GMT +3, время: 07:21. |