да что мне не говори, что не делай, в 8 ие тормоза всё одно есть. В 6 нет, а в 8 есть. Конэчно это может быть из-за винды семёрки... Хотя врятли) 8 тупит при выше описанных действиях. Я с этим смерился:) Заказчикам проДЕМОНстрировал проект в опере :) Что делать... совесть болит, а кашелёк толст :)
|
столкнулся тоже с такой проблемой ))
скрипт выполняет следующее : появление дива одновременно с добавлением прозрачности, изменяю позицию топ ... (пример подсказок вконтакте - только вверх + размеры окна 500х400) в IE и сафари плавней чем в других и это печально ! выдал что-то страшное в виде условия : var crsSpeed=(/MSIE/.test(navigator.userAgent)) ? 1 : ((/Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent)) ? 5 : 18); crsSpeed ставлю в setTimeout для IE попытался увеличить количество пикселей для позиции в 2 раза сафари на ура - а вот в IE чуток ухудшилась эффектность появления на зато почти идентичная скорость использовал для сравнения console.time() и console.timeEnd() колебания в 50-70ms ! смотрел вконтакте у них кстати похожая картина с изменение числа пикселей для IE (эффектность то не та...:)) в итоге прочитав то что нашел в инете по этому поводу и взглянув на свой код пришел к выводу что пора браться за оптимизацию, в этом многие беды - подобной проблемы не надо сильно критиковать за страшное условие сверху ... только осваиваюсь с js :) если у кого то есть какие то соображения по этому поводу, я не против посмотреть на решения которые нашли другие... потому что мое мне кажется "отсталым" спустя пару часов отдыха, пришла мысль : что бы при появлении присваивать не по 0.1 opacity, а по 0.2 и соответственно не 10 раз вызывать метод(как для нормальных браузеров:)) а 5 конкретно для IE 8, немного поправил значения в условии var crsSpeed=(/MSIE\s8/.test(navigator.userAgent)) ? 2 : ((/Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent)) ? 22 : 14);результат console.time показал у chrome, firefox, opera, IE 8 (250-280ms -- кстати IE 8 : 250 :)) погрешность 20-30ms что очень радует. итог IE*2 = cross browser :) - кстати safari 5.0.4 так же как и IE 8 пришлось запускать 5 раз и setTimeout 22 можно сказать что в моем случаи решение найдено почти идеально. может не по теме но все же : console time для ie - мне кажется нужная вещь )) //console.time implementation for IE if(window.console && typeof(window.console.time) == "undefined") { console.time = function(name, reset){ if(!name) { return; } var time = new Date().getTime(); if(!console.timeCounters) { console.timeCounters = {} }; var key = "KEY" + name.toString(); if(!reset && console.timeCounters[key]) { return; } console.timeCounters[key] = time; }; console.timeEnd = function(name){ var time = new Date().getTime(); if(!console.timeCounters) { return; } var key = "KEY" + name.toString(); var timeCounter = console.timeCounters[key]; if(timeCounter) { var diff = time - timeCounter; var label = name + ": " + diff + "ms"; console.info(label); delete console.timeCounters[key]; } return diff; }; } Кто знает может кому-то пригодится подобный взгляд на setTimeout... |
Часовой пояс GMT +3, время: 14:27. |