>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Javascript анимация - Медленная перерисовка страницы http://forum.mozilla-russia.org/viewtopic.php?id=47252 |
RedElf > 08-12-2010 10:43:00 |
Есть скрипт бегущей строки (ну нужен) в которой "бегут" html теги со стилями. Собсвтенно скрипт: скрытый текст function anistart() { var nar=[[],[],[]]; var tmp=''; var el=document.getElementById('anicc'); /* Контейнер, в который мы записываем содержимое после загрузки страницы. В т.ч. и перемещающийся блок ani */ el.innerHTML='<div id="anic"><pre id="ani"></pre></div><img id="anifgl" src="/img/anifg_l.png" alt="" /><img id="anifgr" src="/img/anifg_r.png" alt="" />'; var el=el.firstChild.firstChild; /* переходим к элементу ani */ var w=-1; /* длина части в px, которая должна уйти влево для нового витка. Сразу после загрузки начинаем новый виток */ var nl=0; function newschk (xmldoc) { /*функция для подтягивания новых новостей. Работает раз в 5мин, на скорость влиять не должна*/ Страница выглядит в итоге так: скрытый текст <div id="anicc"> <div id="anic"> <pre id="ani" style="left: -5283px"> <b>07<em>дек</em>| 14:54 || </b> <a href="ссылка">Текст</a> <b>...</b> <a href="ссылка">Текст</a> <b>...</b> <a href="ссылка"></a> <span class="new">...</span> <b></b> <a href="ссылка"></a> <b></b> <a href="ссылка"></a> и т.д. </pre> </div> <img id="anifgl" src="/img/anifg_l.png" alt=""> <img id="anifgr" src="/img/anifg_r.png" alt=""> </div> Ф-и newschk и processRSS вызываются пренебрежимо редко. Остается только OnTimer. Что же с ней сделать, чтобы подружить с Лисом? Спасибо. да, похоже (в ходе экспериментов)) Firefox перерисовывает всю область экрана (в отличие от Хрома или Оперы), может ему можно как-то скриптом задать область прорисовки? |
RedElf > 08-12-2010 11:38:57 |
okkamas_knife пишет
1) Не валидный |
RedElf > 08-12-2010 14:36:48 |
okkamas_knife пишет
1) При чем здесь браузеры вообще? |
Lynn > 08-12-2010 15:11:24 |
Вообще тормозит скорее не скрипт а перерисовка. ссылка для чтения: http://chikuyonok.ru/2010/11/optimization-story/ |
RedElf > 08-12-2010 15:38:09 |
okkamas_knife пишет
Угу, этот "не тормозящий" скрипт грузит мой проц на 100% (с учетом других задач - ~80). А странице он конечно же тормозит сильнее, что впрочем не удивительно - он работает точно также как и мой, только использует дополнительно ЖКвери, а значит работает медленнее. Lynn пишет
Ага И тормозит она в частности из-за того, что ФФ перерисовывает всю область экрана, а не только изменившуюся. Lynn пишет
Можно вообще строку убрать) Если бы меня устроили настолько дискретные перемещения, я бы не спрашивал. Lynn пишет
Спасибо, изучу. |
RedElf > 09-12-2010 17:39:19 |
Мда, прочитал. В качестве решения предлагается забить. скрытый текст var cont=document.getElementById('anicc'); cont.innerHTML=''; var tmp=document.createElement('div'); tmp.innerHTML='<iframe id="anic" name="anic" scrolling="no"></iframe>'; cont.appendChild(tmp.firstChild); cont=cont.firstChild.contentWindow.document /* (или contentDocument) */; el=el.firstChild; /* переходим к элементу ani */ Когда же в Гекко будут условные комментарии, как в IE?! Хотя здесь и они не помогут. |
RedElf > 13-12-2010 11:46:52 |
уфф. Остановился на комбинированном варианте: Opera, Chrome, IE6 и 7 грузят начальный вариант, а Firefox и IE8 - iframe (спасибо Lynn навел на мысль). скрытый текст function anistart() { var cont=document.getElementById('anicc'); if (cont && !(navigator.userAgent.toLowerCase().indexOf("firefox") != -1) && !(navigator.userAgent.toLowerCase().indexOf("msie 8") != -1)) { var nar=[[],[],[]]; /* id, новость, обновление */ var tmp=''; cont.innerHTML='<div id="anic"><pre id="ani"></pre></div><img id="anifgl" src="/img/anifg_l.png" alt="" /><img id="anifgr" src="/img/anifg_r.png" alt="" />'; var el=cont.firstChild.firstChild; /* переходим к элементу ani */ var w=-1; /* длина части в px, которая должна уйти влево для нового витка */ var nl=0; function newschk (xmldoc) { ani.html: скрытый текст <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"> <head> <title></title> <style type="text/css"> body {margin:0; padding:0; border:0;} #ani { display:inline; position:absolute; float:none; top:-1px; height:16px; overflow:hidden; } #ani a { margin-right:60px; text-decoration:none; font:bold 12px "Courier New", Arial; color:#003399; } #ani a:hover {color:#0066ff} #ani b {font:normal 11px Georgia, "Times New Roman", serif; color:#555;} #ani b em { font-style:normal; margin:0 2px; font-size:10px; } #ani .new a, #ani .new b {color:red} </style> <script type="text/javascript" src="http://static.vdv-s.ru/js/XMLHttpRequest/XMLHttpRequest.js"></script> <script type="text/javascript" src="http://static.vdv-s.ru/js/transform.js"></script> <script type="text/javascript" src="http://static.vdv-s.ru/js/ajax_obj.js"></script> <script type="text/javascript"> function anistart() { var tmp=''; var nar=[[],[],[]]; /* id, новость, обновление */ var narid=[]; var el=document.getElementById('body'); el.innerHTML='<div id="ani"></div>'; el=el.firstChild; /* переходим к элементу ani */ var w=-1; /* длина части в px, которая должна уйти влево для нового витка */ function newschk (xmldoc) { var pp=0; И чтобы строка отображалась в ФФ нормально нужно дописать в стилях iframe#anic {width:120%}, чтобы правая пятая часть фрейма была скрыта. Везде приемлемая скорость и одинаковый внешний вид. Это вин |