Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JavaScript и браузеры. Старая тема... пытаюсь понять. 
:(
    Опции темы
ksnk
Дата 15.2.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(Ghirik @  15.2.2008,  09:53 Найти цитируемый пост)
добавить все полезные штучки от IE, не в DOM, а к обычным обработчикам, сделать обновление JavaScript?
 Угу. А как-же война броузеров ? ;-) Одного IE сейчас 3 штуки. IE 5-й, 6 и 7-й ВСЕ ОЧЕНЬ РАЗНЫЕ ;-) На какой равняться? На самый массовый, содержащий приличный список известных багов, или на тот, который еще не получил широкого распространения и содержит всякие недокументированные фичи... И с кого писать стандарт? ;-)

К тому-же есть мысль, что победа в войне броузеров Микрософт не устроила бы. Антимонопольные законы в Америке никто не отменял... Не удивлюсь, если и Оперу и Мозилу потихоньку подкармливает сами знаете кто  smile 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Sardar
Дата 15.2.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Ghirik @  15.2.2008,  08:53 Найти цитируемый пост)
Надеюсь, я врагов не нажил...

Нет, пробегали аргументы, значит дискуссия не пустая smile

Цитата(Ghirik @  15.2.2008,  08:53 Найти цитируемый пост)
но она называется не onpropertychange, а DOMAttrModified.  И соответственно, вместо простой строчки вызова обработчика, опять городьба с определением браузера.

Не совсем. Нужно определить IE ли это или остальные правильные браузеры, не только FF. 

Цитата(Ghirik @  15.2.2008,  08:53 Найти цитируемый пост)
Неужели нельзя просто добавить все полезные штучки от IE, не в DOM, а к обычным обработчикам, сделать обновление JavaScript?

Ну во первых это не часть JS, это часть API, который JS склеивает (помним, что JS - клей для компонентов). Во вторых это действительно событие DOM, мешать его в контекст объекта как минимум не красиво. Ты ведь пишешь  obj.style.property? Так давай все стили в корень объекта бросим (первые нетскейповцы). Также у W3C правильное понятие обработчика событий - их много. На .onpropertychange - можно повесить один обработчик, дальше уже шаманство. Ну и в конце концов в DOM 2 Event более продуманная модель событий, там есть не только bubbling события к корню, но и capturing - от корня к потомку - удобно в общих родительских обработчиках.

Просто ты никогда не задуывался, что можно по другому, лучше. Вся событийная модель в w3c браузерах на порядок лучше IE модели, просто нужно один раз прочесть, использовать, а затем с грубым матом спускаться на землю и писать "для ИЕ тоже".


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Ghirik
Дата 16.2.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



DOM5

Код

220v.cable.ATX.motherBoard.pentium7.windows.browser.window.alert('Hello word!');


Сори... smile 

 smile 

Это сообщение отредактировал(а) Ghirik - 16.2.2008, 15:01


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Ghirik
Дата 18.2.2008, 01:25 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Цитата

пробегали аргументы, значит дискуссия не пустая 


В подтверждение выших слов, сделал небольшой тестик.

Кому просто посмотреть на результат работы - сюда.

А вот код страницы:
Код

<!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" xml:lang="en" lang="en"> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>MultiDiv Floating Position</title>
<style type="text/css">
html { height: 100%; }
body { margin: 0; padding: 0; height: 100%; }
* html body { overflow: hidden; }
* html .anime { position: absolute; }
.anime { position: fixed; top: 0px; left: 0px; height: 1px; width: 5%; background: #A8A; }
* html #window_body { height: 100%; overflow-y: scroll; margin: 0px; }
</style>
<!--[if IE]>
<style type="text/css">
html, body { overflow: hidden; }
</style>
<![endif]-->
<script type="text/javascript">
<!--
var min = 100;          // минимальный размер, px
var max = 300;         // максимальный -"-
var t = 15;            // скорость анимации
var id = [];
function divSize() {this.size == min ? this.size = max : this.size = min};
function on() {
    div = document.getElementsByTagName('div');
    var c = 0;
    for (var i = 0; i < div.length; i++) {
        if (div[i].className == 'anime') {
            if (div[i].left) div[i].style.left = div[i].left + 'px';
            if (div[i+1]) div[i+1].left = div[i].offsetLeft + div[i].offsetWidth;
            div[i].size = min;
            div[i].x = 0;
            div[i].onmouseover = divSize;
            div[i].onmouseout = divSize;
            id[c] = i;
            c++
        }
    }
scan();
}
function divMotion() {
    for (var i = 0; i < id.length; i++) {
        if(div[id[i]].size != div[id[i]].x) {
            var add = .1 * (div[id[i]].size - div[id[i]].x);
            add > 0 ? add = Math.ceil(add) : add = Math.floor(add);
            div[id[i]].style.height = div[id[i]].offsetHeight + add + 'px';
            div[id[i]].x = div[id[i]].x + add;
        }
    }
}
var q = 0;
function scan() {
    div[id[q]].size == min ? div[id[q]].size = max : div[id[q]].size = min    
    q++;
    if (q == id.length) q = 0;
    window.setTimeout("scan()", 100);
}
window.onload = on;
window.setInterval("divMotion()", t);
//-->
</script>
</head>
<body>
<div id="window_body">
</div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
    <div class="anime"></div>
</body>
</html>


Для простейшей оценки работы интерпретаторов JavaScript того или иного браузера, нажимаем Ctpl+Alt+Delete, заходим на вкладку Быстродействие и открываем указанную выше ссылку по очереди в разных браузерах.

Перед открытием в новом браузере, не забываем закрывать предыдущий!

Для полноты ощущений, можно при просмотре анимации, дополнительно, поводить мышкой по анимируемым объектам.

Наверное разработчикам FF следует задуматься о переписании интерпретатора JavaScript. Ну а остальные правильные браузеры вроде неплохо справляются с задачей.




--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
AKS
Дата 18.2.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(Ghirik @  18.2.2008,  01:25 Найти цитируемый пост)
Наверное разработчикам FF следует задуматься о переписании интерпретатора JavaScript.

А причем тут интерпретатор JavaScript? У Вас ведь, так сказать, комплексный тест на выживание. В итоге задействуются различные составляющие движка браузера – вычисления и взаимодействие с DOM API производит один модуль, рисует/отображает – другой, еще какой-нибудь наверняка должен быть занят контролем взаимодействия компонент и т.д. 
Добавить мне больше нечего, поскольку подробностей не знаю, но, надеюсь, Вам понятно, что SpiderMonkey может быть и не виноват вовсе. Вообще, вот список составляющих Gecko:
  • Document parser (handles HTML and XML) 
  • Layout engine with content model 
  • Style system (handles CSS, etc.) 
  • JavaScript runtime (SpiderMonkey) 
  • Image library 
  • Networking library (Necko)
  • Platform-specific graphics rendering and widget sets for Win32, X, and Mac
  • User preferences library 
  • Mozilla Plug-in API (NPAPI) to support the Navigator plug-in interface 
  • Open Java Interface (OJI), with Sun Java 1.2 JVM 
  • RDF back end 
  • Font library 
  • Security library (NSS)
Тут уже придется выбирать, кто виноват больше остальных, и что нужно переписывать разработчикам. ;)


PM MAIL   Вверх
Ghirik
Дата 18.2.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Мне тут сказали, что виноват модуль отрисовки, видимо этот

Platform-specific graphics rendering and widget sets for Win32, X, and Mac

Говорят, что он в FF3 уже переписан.


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Ghirik
Дата 19.2.2008, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Как оказалось....  smile 

Бета версию FF3 уже давным давно можно юзать... При чем, уже вышла третья бета версия.  smile 

Действительно, в FF3 совсем по другому обстоит дело с отрисовкой. Предыдущий тест теперь проходит нормально, как в IE и Опере.

Но вот этот тест уже не катит. А в нем просто добавлено содержимое в контейнеры, и оно даже не урезается при сворачивании, с урезанием будет полная труба.

Получается, что ни чего не изменилось... Зачем нужна анимация пустых блоков? И похоже, уже долго не изменится, т.к., ни кто не станет менять идеологию на стадии третьей бета версии.

По этим тестам выходит, что FF третьей версией не догнал движок Оперы, а к IE даже не приблизился. IE на всех этих тестах, вообще не ест ресурсы вычислителя.

Хочу заметить, что в скрипте использован самый "легкий" способ анимирования, без лишних вычислений, без сохранения предыдущих состояний. Я его выбрал именно по критерию получения в FF сносной анимации.



Это сообщение отредактировал(а) Ghirik - 19.2.2008, 05:31


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Ghirik
Дата 19.2.2008, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Сори... Не знаю причину, но возможно после установки FF3 нужно было перезагрузиться.
Сейчас FF3 стал значительно лучше отрабатывать. Это меняет дело.... До перезагрузки он у меня сразу съедал 70% ресурсов, сейчас до 100% доходит только если интенсивно водить мышкой. И то, при этом практически не тормозит. Значит будем юзать. Только вот, нескоро наверное для него напишут файербаг.


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
ksnk
Дата 20.2.2008, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



 smile Вот, с башорга, 
Код

w3.org - дебилы. Придумали какой-то стандарт, несовместимый с IE...




M
Sardar
Народ, боритесь с желанием пофлеймить, подкрепляйте посты хоть с толику полезной, согласно топику, инфой. Иначе буду резать :)



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0817 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.