Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   UpJump: Q&A :) (https://javascript.ru/forum/misc/14421-upjump-q.html)

UpJump 14.07.2011 20:58

это я знаю. но нужно что бы работало и на шестой
UPD и есть ли смысл вообще сейчас учитывать IE6 для большего "удовлетворения" пользователей?

trikadin 14.07.2011 21:03

У меня в шестом осле (sp3, но я думаю, что и в двух предыдущих) этот способ работает на ура.

tenshi 14.07.2011 21:08

любые оптимизации надо начинать с профилирования, а не чтения статей о том какие кавычки быстрее

trikadin 14.07.2011 21:12

Цитата:

Сообщение от UpJump
и есть ли смысл вообще сейчас учитывать IE6 для большего "удовлетворения" пользователей?

Сохраняйте базовый функционал и добавляйте плашку "Ваш браузер устарел" со ссылкой на нормальные браузеры.

UpJump 15.07.2011 13:20

Всем спасибо конечно:), но в вопросе имелось ввиду какой способ гарантированно поможет определить IE6<?

trikadin 15.07.2011 13:38

Вам нужно определить только ie6? Простой, но тупой способ:
<!--[if IE 6]><script>alert("IE 6!");</script><![endif]-->


Способ получше:
if (navigator.appVersion.search("MSIE 6") !=-1)
 alert("IE 6!");

UpJump 15.07.2011 13:43

IE6 и старше. универсальный способ так сказать

Kolyaj 15.07.2011 13:47

Цитата:

Сообщение от trikadin
Способ получше:

Первый способ всё-таки получше будет.

trikadin 15.07.2011 13:49

UpJump, да что ж у вас за трава такая... Вот УНИВЕРСАЛЬНЫЙ способ!

if ('\v'=='v') alert("ie!");


Вы, блин, проверяйте, что ли...

Kolyaj, если в сайте страниц 50 - не уверен.

UpJump 15.07.2011 13:51

Цитата:

да что ж у вас за трава такая
пардон, но к великому сожалению являюсь счастливым обладателем только IE8. так что проверить не представляю как

trikadin 15.07.2011 14:08

Скажите, а если вам скажут, что от отрубания головы умирают, вы тоже скажете, что, к великому сожалению, у вас нет гильотины, поэтому проверить не представляете как?

Поверьте - он работает. У меня стоит восьмой на компе и шестой на виртуальной. И там, и там этот способ работает. Плюс ещё там, где я нашёл этот способ (увы, не могу дать ссылку, ибо не помню, где это было) приводилась таблица проверки этого способа на всех ie.

Kolyaj 15.07.2011 14:08

Цитата:

Сообщение от trikadin
Kolyaj, если в сайте страниц 50 - не уверен.

Например так
var isIE = false/*@cc_on || true @*/;
alert(isIE);

melky 15.07.2011 14:12

это вырежет минификатор. :)

чем плох способ через юзерагента?

Kolyaj 15.07.2011 14:13

Цитата:

Сообщение от melky
это вырежет минификатор.

var isIE = new Function('return false/*@cc_on || true @*/')();

melky 15.07.2011 14:17

У вас получше, думаю
var ie = eval( "false /*@cc_on || true @*/" );

UpJump 15.07.2011 14:21

trikadin, большое спасибо за наставление:)

UpJump 16.07.2011 23:43

Всем привет!:) Хотелось бы услышать мнение специалистов.
Пишу примитивный 3д движок.
Имеется большое кол-во координат которые будут в дальнейшем преобразовываться. Как будет лучше хранить их: в свойствах объекта или в массиве?
За одну итерацию может быть много(хотя бы 1000) преобразований.
Естественно волнует скорость обработки.

melky 16.07.2011 23:47

jsperf.com

сравнивай, сколько угодно

но массивы быстрее

trikadin 17.07.2011 00:02

Статья на тему)

UpJump 17.07.2011 00:23

Цитата:

но массивы быстрее
тестил в chrome 12 в итоге массив слил объекту.
Цитата:

Статья на тему)
круто. понравилось. читал около месяца назад про другой двиг... вроде тоже на хабаре. там чуть ли не поддержка шейдеров с конвектором из макса. только для пущей надежности это через пару версий IE имхо. кстати тут тож нет поддержки IE хотя бы черех vml. я свой кроссбраузерный делаю.

trikadin 17.07.2011 00:33

Я где-то тоже про пиксельные шейдеры встречал. Причём, по-моему, тоже на хабре. Ну, почитайте комменты, может, там что есть...
Цитата:

Сообщение от UpJump
я свой кроссбраузерный делаю

С дамами и преферансом?)

kobezzza 17.07.2011 01:02

Цитата:

Имеется большое кол-во координат которые будут в дальнейшем преобразовываться. Как будет лучше хранить их: в свойствах объекта или в массиве?
Ну когда я работал с OpenGL (c#) я использовал именно массивы (причём одномерные), как лучше сделать для JS даж хз.

Также в плане оптимизаций советую почитать про дисплейные списки и ещё для плавной отрисовки сложной анимации в языках типа delphi отлавливается событие отрисовки экрана ОСи вместо таймаута в самом языке (даёт офигенную оптимизацию, мб и в JS, что-то типо такова реализовали), хотя например для c# не актуально, там и так всё ок.

WebGL - это всего лиш порт OpenGL под браузер, так что думаю, все стандартные фичи по оптимизации там также актуальны.

UpJump 18.07.2011 22:47

kobezzza, спасибо.
Народ опять таки к канвасу. Может кто знает еще способ очистки канвы помимо этих?:
1)закрашивать c помощью fillRect()// этот способ плох
2)очищать clearRect()
3)изменять размеры самой канвы

tenshi 23.07.2011 16:45

ты их коллекционируешь чтоли?

UpJump 28.07.2011 13:21

нет я ищу самый быстрый

UpJump 28.07.2011 21:54

народ кто-нибудь слышал о таком событии - MozAfterPaint?
UPD
Короче как я понял это событие возникает после отрисовки(очистки?) канвы только(!) в Mozila . Но если происходит частая очистка то соответственно создается много событий и соответственно захламляется память, я правильно понимаю? Если да то как с этим бороться?
Вот ссылка на первоисточник если кому интересно.

B@rmaley.e><e 28.07.2011 23:07

Цитата:

Сообщение от UpJump
MozAfterPaint

Цитата:

Сообщение от UpJump
только(!) в Mozila

Какая неожиданность.
Цитата:

Сообщение от UpJump
если происходит частая очистка то соответственно создается много событий и соответственно захламляется память

Что? С чего бы это памяти захламиться?

UpJump 29.07.2011 00:24

Цитата:

Какая неожиданность.
я стараюсь изложить суть вопроса как можно яснее:)
В любом случае спасибо за ответ B@rmaley.e><e.

UpJump 30.07.2011 17:36

всем привет. может кто знает какой-нить софт для отлова утечек памяти в лисе?

melky 30.07.2011 21:52

диспетчер задач ? :blink:

UpJump 01.08.2011 16:37

все спасибо. вопрос отпал. начитался статей. дело обстоит гораздо глубже в самой лисе. или в винде.

x-yuri 01.08.2011 23:03

так расскажи тогда, в чем дело обстоит?

UpJump 04.08.2011 14:19

x-yuri,
сейчас уже не найду, но вот в общем.

UpJump 04.08.2011 14:22

Существует ли возможность получить left элемента в писклях если атрибут был указан в процентах? понятно что можно высчитать, но когда элемент лежит в другом элементе, а тот еще в одном и т.д., то все не так просто.

UpJump 04.08.2011 17:05

извиняюсь. глупость написал:)

x-yuri 04.08.2011 21:04

глубже или не глубже... вопрос в том, стоит ли пытаться с этим бороться

UpJump 09.08.2011 19:43

Добрый день уважаемые форумчане:) .
Мучаюсь целый день, но толку ноль. В чем юмор с setInterval() в IE<9 версии?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<div id='d'></div>
<script type="text/javascript">

var d = document.getElementById('d');
var i=0;

function f(){
	i++;
	d.innerHTML = i;
	if(i==10)
		clearInterval(int);
}

var int = setInterval(f,0);	

</script>
</body>
</html>

Соответственно проверил в IE 8,7,6. Везде только одна итерация. Доктайп тоже помучил, в итоге ничего не дало. Если кому лень то прошу хотя бы отписаться у кого происходит больше одной итерации. Спасибо за внимание.

Sweet 09.08.2011 19:56

Делай задержку больше 0.

UpJump 09.08.2011 19:58

Sweet,
хм.. помогло. спасибо. осталось только понять в чем собственно прикол-то был.

UpJump 09.08.2011 21:54

Господа еще один вопрос возник. Ситуация такова. Я таки сделал свой примитивный 3д двиг. Принцип был таков:
Если браузер поддерживает canvas то используем его.
Если нет то это скорее всего IE<9 и используем vml.
Но тут всплыл камень. Для использования vml нужен Doctype HTML 4.0, что недопустимо для IE9 с канвасом.
Вопрос в том как собрать doctype для одного и для второго случая?


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