Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Совместимость с IE7 (https://javascript.ru/forum/misc/20859-sovmestimost-s-ie7.html)

popov654 20.08.2011 16:15

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

popov654 20.08.2011 16:18

Цитата:

Сообщение от Octane (Сообщение 121492)
hasAttribute нет в IE<9

Мдааа... слов нет)
А ещё к этому добавим, что под XP нет IE9 (многие на ней сидят)

popov654 20.08.2011 16:22

По делу (ну надо же как-то подытожить). В общем, как я понял, дело было в том, что атрибут rowspan существовал, выводился (равным 1), но... не изменялся. Вероятно, в IE он только для чтения (если такое вообще возможно). Потому что других объяснений я не вижу, он так и оставался равен 1 после всех манипуляций. Ну отсюда и лаги. В первой функции ячейки удалялись, а верхняя не растягивалась вниз. Во второй функции ячейки должны бы вставляться, но количество вставок бралось из rowspan, и только при условии что оно больше 1, а rowspan везде был 1. Так что вторая функция и вовсе ничего не делала, плюс ругалась при попытке обратиться к свойствам якобы вставленных ячеек :)

Octane 20.08.2011 16:26

Цитата:

Сообщение от popov654
Мдааа... слов нет)

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

Вообще я бы не пытался изменить существующую таблицу, а создавал бы каждый раз новую с помощью JavaScript, на основе данных, пришедших с сервера в JSON-формате.

popov654 20.08.2011 18:06

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

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

popov654 20.08.2011 18:20

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

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

Octane 20.08.2011 20:14

Цитата:

Сообщение от 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 стоит пока на запасной машине

Виртуальные машины в помощь.

popov654 21.08.2011 05:34

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

Цитата:

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

Цитата:

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

Цитата:

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

Цитата:

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

Цитата:

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

Цитата:

Виртуальные машины в помощь.
Знаю, даже иногда пользуюсь для проверки Java десктоп-приложений. Но HDD у меня небольшой и почти полностью уже забит (в т.ч. и виртуальными машинами, коих уже 3-4), так что я не могу позволить себе ещё 2 машины с XP поставить с IE6 и IE7. Вот и юзаю для этого нетбук и второй ноут соответственно)

Octane 21.08.2011 06:24

Цитата:

Сообщение от 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

popov654 21.08.2011 08:16

Цитата:

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

Цитата:

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

Цитата:

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


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