Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 20.08.2011, 16:15
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

****************

Последний раз редактировалось popov654, 21.08.2011 в 08:09.
Ответить с цитированием
  #12 (permalink)  
Старый 20.08.2011, 16:18
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Сообщение от Octane Посмотреть сообщение
hasAttribute нет в IE<9
Мдааа... слов нет)
А ещё к этому добавим, что под XP нет IE9 (многие на ней сидят)
Ответить с цитированием
  #13 (permalink)  
Старый 20.08.2011, 16:22
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

По делу (ну надо же как-то подытожить). В общем, как я понял, дело было в том, что атрибут rowspan существовал, выводился (равным 1), но... не изменялся. Вероятно, в IE он только для чтения (если такое вообще возможно). Потому что других объяснений я не вижу, он так и оставался равен 1 после всех манипуляций. Ну отсюда и лаги. В первой функции ячейки удалялись, а верхняя не растягивалась вниз. Во второй функции ячейки должны бы вставляться, но количество вставок бралось из rowspan, и только при условии что оно больше 1, а rowspan везде был 1. Так что вторая функция и вовсе ничего не делала, плюс ругалась при попытке обратиться к свойствам якобы вставленных ячеек
Ответить с цитированием
  #14 (permalink)  
Старый 20.08.2011, 16:26
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от popov654
Мдааа... слов нет)
да ничего страшного в этом нет, getAttribute(name) вернет null для несуществующего атрибута.

Вообще я бы не пытался изменить существующую таблицу, а создавал бы каждый раз новую с помощью JavaScript, на основе данных, пришедших с сервера в JSON-формате.
Ответить с цитированием
  #15 (permalink)  
Старый 20.08.2011, 18:06
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

А, и правда. Главное чтобы осталные методы работали)

Насчёт JSON формата - я к сожалению не умею им пользоваться. Я вообще о нём к сожалению только слышал. У меня вся HTML-разметка таблицы генерируется PHP-скриптом. Зато ресурсы локального компьютера сильно не расходуются, всю работу берёт на себя сервер

Последний раз редактировалось popov654, 21.08.2011 в 05:12.
Ответить с цитированием
  #16 (permalink)  
Старый 20.08.2011, 18:20
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Насчёт IE я похоже был не прав, всё с ним в порядке. Ну разве что поддержка атрибутов не полная, но это не смертельно
Что же до Седьмой его версии, один недостаток - ужасная тормозятина, особенно на не очень мощных машинах. Из всех установленных у меня браузеров он самый медленный, причём разница любых операций, особенно с JS, этак раза в 3-4, что весьма заметно. Даже на огромных страницах статического HTML он начинает подвисать.

И я бы разумеется давно поставил IE8, но одно останавливает: вернуться назад уже нельзя (в смысле даунгрейд невозможен, некорректная деинсталляция Восьмёрки имеет место), а мне крайне хотелось бы тестить свои проекты и в IE7 тоже. Поэтому IE8 стоит пока на запасной машине
Ответить с цитированием
  #17 (permalink)  
Старый 20.08.2011, 20:14
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от popov654
Насчёт JSON формата - я к сожалению не умею им пользоваться. Я вообще о нём к сожалению только слышал. У меня вся рHTML-разметка таблицы генерируется PHP-скриптом.
Текстовое описание JS-объекта, ничего сложного http://json.org/ , в PHP вместо HTML-разметки собираешь массив и возвращаешь jscon_encode($data), в JavaScript выполняешь JSON.parse(jsonString), получишь к примеру такой объект данных:
data = {
    clients: [
        {ip: "192.168.0.1", listenTime: "00:10", when: "00:00-00:30", player: "NSPlayer", connections: 3},
        {ip: "192.168.0.2", listenTime: "00:20", when: "00:10-01:00", player: "BSPlayer", connections: 2},
        {ip: "192.168.0.3", listenTime: "00:30", when: "00:20-01:10", player: "Opera", connections: 8},
        {ip: "192.168.0.4", listenTime: "00:40", when: "00:30-01:20", player: "Firefox", connections: 5},
        {ip: "192.168.0.5", listenTime: "00:50", when: "00:40-01:30", player: "Chrome", connections: 1}
    ]
}

И уже на основе основе этих данных в зависимости какую там кнопку нажали, создаешь новую таблицу и удаляешь старую.
Таким образом знать о HTML-разметке надо будет только в одном месте, не придется выполнять медленные операции преобразования DOM-элементов таблицы, можно отрисовывать таблицу частями, данные с сервера можно будет отдавать не только этому скрипту.

Сообщение от popov654
Зато ресурсы локального компьютера сильно не рсходуются, всю работу берёт на себя сервер
Да тут не сверх большие вычисления. В новых браузерах, наверное, вообще без сервера можно обойтись, открыв файл через FileAPI и сделав все на клиенте.

Сообщение от popov654
Что же до Седьмой его версии, один недостаток - ужасная тормозятина, особенно на не очень мощных машинах. Из всех установленных у меня браузеров он самый медленный, причём разница любых операций, особенно с JS, этак раза в 3-4, что весьма заметно. Даже на огромных страницах статического HTML он начинает подвисать.
Можно попробовать извлекать таблицу из дерева, перед изменением, должно ускорить работу.

Сообщение от popov654
И я бы разумеется давно поставил IE8, но одно останавливает: вернуться назад уже нельзя (в смысле даунгрейд невозможен, некорректная деинсталляция Восьмёрки имеет место), а мне крайне хотелось бы тестить свои проекты и в IE7 тоже. Поэтому IE8 стоит пока на запасной машине
Виртуальные машины в помощь.

Последний раз редактировалось Octane, 20.08.2011 в 20:23.
Ответить с цитированием
  #18 (permalink)  
Старый 21.08.2011, 05:34
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Ссылку посмотрел, удобно)
Но вопросы остались

Цитата:
И уже на основе основе этих данных в зависимости какую там кнопку нажали, создаешь новую таблицу и удаляешь старую.
Разве всю таблицу удалять рациональнее/быстрее чем то, что я делаю сейчас (двигая n-ное количество строк)?
Ведь большая часть данных вообще может в итоге остаться на месте.

Цитата:
можно отрисовывать таблицу частями
Это как? Путём, опять же, динамического изменения DOM? Но мне это не нужно, у меня данные весьма статические, меняться в процессе выполнения они уж точно не будут. Поэтому и перезагружать какие-то куски данных необходимости нет.

Цитата:
данные с сервера можно будет отдавать не только этому скрипту
Опять же, пока это не нужно) Я этим скриптом и ограничусь, ну маскимум сделаю в 4-ой версии импорт в базу данных, чтобы затем в другом скрипте можно было рисовать месячные диаграммы с помощью GDlib2.

Цитата:
новых браузерах, наверное, вообще без сервера можно обойтись, открыв файл через FileAPI и сделав все на клиенте.
Да мне бы желательно чтобы во всех работало... Кстати, FileAPI поддерживатеся IE9?

Цитата:
Можно попробовать извлекать таблицу из дерева, перед изменением, должно ускорить работу.
ОК, как мне это сделать?)

Цитата:
Виртуальные машины в помощь.
Знаю, даже иногда пользуюсь для проверки Java десктоп-приложений. Но HDD у меня небольшой и почти полностью уже забит (в т.ч. и виртуальными машинами, коих уже 3-4), так что я не могу позволить себе ещё 2 машины с XP поставить с IE6 и IE7. Вот и юзаю для этого нетбук и второй ноут соответственно)
Ответить с цитированием
  #19 (permalink)  
Старый 21.08.2011, 06:24
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от popov654
Разве всю таблицу удалять рациональнее/быстрее чем то, что я делаю сейчас (двигая n-ное количество строк)?
Ведь большая часть данных вообще может в итоге остаться на месте.
Куча модификаций innerHTML для каждой ячейки сильно тормозит работу, добавление целой таблицы должно быть быстрее, да и в виде строки её можно сгенерировать, а потом 1 раз обновить: container.innerHTML = tableHTML;

Сообщение от popov654
то как? Путём, опять же, динамического изменения DOM?
Ну сейчас клиенту приходится сразу отрисовывать огромнейшую таблицу, а так данные будут где-нибудь в скрипте лежать:
Код:
<script>var clients = JSON.parse('<?php echo json_encode($data) ?>');</script>
а табличку строить из первых 100 записей к примеру.

Сообщение от popov654
Кстати, FileAPI поддерживатеся IE9?
Вроде нет, по крайней мере нет объекта FileReader

Сообщение от popov654
ОК, как мне это сделать?)
removeChild
Ответить с цитированием
  #20 (permalink)  
Старый 21.08.2011, 08:16
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Цитата:
removeChild
Мне кажется, или я потом замучаюсь всё это дело вставлять обратно insert-ом? У меня там 3 таблицы, да ещё кроме них есть ещё кой-чего

Цитата:
Ну сейчас клиенту приходится сразу отрисовывать огромнейшую таблицу, а так данные будут где-нибудь в скрипте лежат
Очень интересный подход, здорово. То есть браузер кодированные данные получает, но не интерпретирует их -> прирост скорости (если я правильно понял)

Цитата:
а табличку строить из первых 100 записей к примеру.
Не вижу смысла... Только если она бы как-нибудь догружалась сама, как Обсуждения ВКонтакте, по ходу прокрутки. Юзера и так может в случае беглого анализа напрячь уже то, что надо между блоками по 3 дня переключаться) А Вы предлагаете ещё мельче дробить
Меня по скорости в FF5+ и Opera 11 всё устраивает совершенно. На других браузерах просто не тестил ещё, но наверняка тоже виснуть не будет (взять хоть Chrome или Safari). Это только в IE тормоза, и то с оговоркой что это Седьмая версия (в Восьмой всё шустрее на порядок, насколько я знаю по опыту с другими интернет-ресурсами).
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Картинки-ссылки в меню не работают в IE7 Александр345 Internet Explorer 6 16.06.2011 18:33
Js + Ie7 проблема onuvidelsolnce Internet Explorer 4 28.03.2011 20:21
Взаимодействие фреймов. IE7 Svarog81 Internet Explorer 1 03.03.2011 13:08
слетает верстка в IE6 и IE7 (js используется) rognarek Internet Explorer 3 08.09.2010 19:34
Тормозит подсветка td в IE7 Beck Events/DOM/Window 7 25.04.2010 21:45