![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.08.2011, 16:15
|
Профессор
|
|
Регистрация: 22.09.2010
Сообщений: 217
|
|
****************
Последний раз редактировалось popov654, 21.08.2011 в 08:09.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.08.2011, 16:18
|
Профессор
|
|
Регистрация: 22.09.2010
Сообщений: 217
|
|
Сообщение от Octane
|
hasAttribute нет в IE<9
|
Мдааа... слов нет)
А ещё к этому добавим, что под XP нет IE9 (многие на ней сидят)
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.08.2011, 16:22
|
Профессор
|
|
Регистрация: 22.09.2010
Сообщений: 217
|
|
По делу (ну надо же как-то подытожить). В общем, как я понял, дело было в том, что атрибут rowspan существовал, выводился (равным 1), но... не изменялся. Вероятно, в IE он только для чтения (если такое вообще возможно). Потому что других объяснений я не вижу, он так и оставался равен 1 после всех манипуляций. Ну отсюда и лаги. В первой функции ячейки удалялись, а верхняя не растягивалась вниз. Во второй функции ячейки должны бы вставляться, но количество вставок бралось из rowspan, и только при условии что оно больше 1, а rowspan везде был 1. Так что вторая функция и вовсе ничего не делала, плюс ругалась при попытке обратиться к свойствам якобы вставленных ячеек ![](https://javascript.ru/forum/images/smilies/smile.gif)
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.08.2011, 16:26
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Сообщение от popov654
|
Мдааа... слов нет)
|
да ничего страшного в этом нет, getAttribute(name) вернет null для несуществующего атрибута.
Вообще я бы не пытался изменить существующую таблицу, а создавал бы каждый раз новую с помощью JavaScript, на основе данных, пришедших с сервера в JSON-формате.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.08.2011, 18:06
|
Профессор
|
|
Регистрация: 22.09.2010
Сообщений: 217
|
|
А, и правда. Главное чтобы осталные методы работали)
Насчёт JSON формата - я к сожалению не умею им пользоваться. Я вообще о нём к сожалению только слышал. У меня вся HTML-разметка таблицы генерируется PHP-скриптом. Зато ресурсы локального компьютера сильно не расходуются, всю работу берёт на себя сервер
Последний раз редактировалось popov654, 21.08.2011 в 05:12.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.08.2011, 18:20
|
Профессор
|
|
Регистрация: 22.09.2010
Сообщений: 217
|
|
Насчёт IE я похоже был не прав, всё с ним в порядке. Ну разве что поддержка атрибутов не полная, но это не смертельно
Что же до Седьмой его версии, один недостаток - ужасная тормозятина, особенно на не очень мощных машинах. Из всех установленных у меня браузеров он самый медленный, причём разница любых операций, особенно с JS, этак раза в 3-4, что весьма заметно. Даже на огромных страницах статического HTML он начинает подвисать.
И я бы разумеется давно поставил IE8, но одно останавливает: вернуться назад уже нельзя (в смысле даунгрейд невозможен, некорректная деинсталляция Восьмёрки имеет место), а мне крайне хотелось бы тестить свои проекты и в IE7 тоже. Поэтому IE8 стоит пока на запасной машине ![](https://javascript.ru/forum/images/smilies/smile.gif)
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.08.2011, 20:14
|
|
|
Регистрация: 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.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
21.08.2011, 05:34
|
Профессор
|
|
Регистрация: 22.09.2010
Сообщений: 217
|
|
Ссылку посмотрел, удобно)
Но вопросы остались
Цитата:
|
И уже на основе основе этих данных в зависимости какую там кнопку нажали, создаешь новую таблицу и удаляешь старую.
|
Разве всю таблицу удалять рациональнее/быстрее чем то, что я делаю сейчас (двигая n-ное количество строк)?
Ведь большая часть данных вообще может в итоге остаться на месте.
Цитата:
|
можно отрисовывать таблицу частями
|
Это как? Путём, опять же, динамического изменения DOM? Но мне это не нужно, у меня данные весьма статические, меняться в процессе выполнения они уж точно не будут. Поэтому и перезагружать какие-то куски данных необходимости нет.
Цитата:
|
данные с сервера можно будет отдавать не только этому скрипту
|
Опять же, пока это не нужно) Я этим скриптом и ограничусь, ну маскимум сделаю в 4-ой версии импорт в базу данных, чтобы затем в другом скрипте можно было рисовать месячные диаграммы с помощью GDlib2.
Цитата:
|
новых браузерах, наверное, вообще без сервера можно обойтись, открыв файл через FileAPI и сделав все на клиенте.
|
Да мне бы желательно чтобы во всех работало... Кстати, FileAPI поддерживатеся IE9?
Цитата:
|
Можно попробовать извлекать таблицу из дерева, перед изменением, должно ускорить работу.
|
ОК, как мне это сделать?)
Цитата:
|
Виртуальные машины в помощь.
|
Знаю, даже иногда пользуюсь для проверки Java десктоп-приложений. Но HDD у меня небольшой и почти полностью уже забит (в т.ч. и виртуальными машинами, коих уже 3-4), так что я не могу позволить себе ещё 2 машины с XP поставить с IE6 и IE7. Вот и юзаю для этого нетбук и второй ноут соответственно)
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
21.08.2011, 06:24
|
|
|
Регистрация: 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
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
21.08.2011, 08:16
|
Профессор
|
|
Регистрация: 22.09.2010
Сообщений: 217
|
|
Мне кажется, или я потом замучаюсь всё это дело вставлять обратно insert-ом? У меня там 3 таблицы, да ещё кроме них есть ещё кой-чего
Цитата:
|
Ну сейчас клиенту приходится сразу отрисовывать огромнейшую таблицу, а так данные будут где-нибудь в скрипте лежат
|
Очень интересный подход, здорово. То есть браузер кодированные данные получает, но не интерпретирует их -> прирост скорости (если я правильно понял)
Цитата:
|
а табличку строить из первых 100 записей к примеру.
|
Не вижу смысла... Только если она бы как-нибудь догружалась сама, как Обсуждения ВКонтакте, по ходу прокрутки. Юзера и так может в случае беглого анализа напрячь уже то, что надо между блоками по 3 дня переключаться) А Вы предлагаете ещё мельче дробить
Меня по скорости в FF5+ и Opera 11 всё устраивает совершенно. На других браузерах просто не тестил ещё, но наверняка тоже виснуть не будет (взять хоть Chrome или Safari). Это только в IE тормоза, и то с оговоркой что это Седьмая версия (в Восьмой всё шустрее на порядок, насколько я знаю по опыту с другими интернет-ресурсами).
|
|
|
|