IE9 и таблицы

IE9 и таблица (18.31КиБ)

В продукте, которым я занимаюсь, минимальная версия Эксплорера, которую я решил поддерживать — девятая. В будущем я хочу поднять это требование до десятой, а пока приходится жить с тем, что есть — клиенты не готовы к резким переменам и я их понимаю.

Наткнулись на странную проблему в этой версии Эксплорера — некоторые таблицы выглядят как на снимке выше — ячейки в строках иногда выпирают вправо безо всякой видимой причины.

Дело оказалось в пробелах между ячейками — верстальщик отформатировал шаблон, чтобы он лучше читался, и все браузеры всё показали правильно, один девятый Эксплорер сошёл с ума. Лечится проблема запросто — либо убираем форматирование в шаблоне, либо убираем его прямо в браузере.

Я выбрал второй путь. Пусть лучше шаблон выглядит читаемо, а костыль для девятого Эксплорера всегда можно будет убрать лёгким движением руки. Выглядит он вот так, кстати (используется jQuery, само собой):

$("table tr").contents().filter(function() {
    return this.nodeType == 3;
}).remove();

Комментарии 16

Владимир Родкин № 2
А что, если пользователю отдавать неформатированный HTML? Вроде того, как минифицируют JS и CSS?
Евгений Степанищев (bolknote.ru) автор № 3
На это вычислительные ресурсы всё-таки уходят. Да и логику нужно программировать — где-то можно убирать пробелы, где-то нельзя.
jankkhvej № 6

Комментарий для Евгения Степанищева:

клиенты не готовы к резким переменам и я их понимаю.

IE9 работает только на Windows выше XP, и там он автоматически заменяется на IE10, и так далее. IE9 может остаться только если специально выключены автоматические обновления, которые по умолчанию включены в версиях Windows выше XP.
Пожалуйста, объясните, какой смысл это «понимать»?
Что именно вам понятно — вы имеете в виду корпоративную политику, отключившую обновления, или что-то другое?

Владимир Родкин № 7
Видимо под клиентами подразумеваются заказчики, а не посетители ресурса.
А заказчики делают выводы о поддержке исходя из статистики посещений. Собственно заказчика понять можно, посетителя нет.

Если копать глубже, то посетитель чаще всего — офисный работник. И ему приходится пользоваться старым ИЕ, так как политика безопасности компании по какой-то причине исключает обновления.
Евгений Степанищев (bolknote.ru) автор № 8
IE10 работает на Windows 7 и выше: https://en.wikipedia.org/wiki/Internet_Explorer_10

Чтобы система получила обновления, должен быть интернет и это должно быть разрешено политиками, т.е. все обновления должны быть тщательно протестированы.
Евгений Степанищев (bolknote.ru) автор № 10
Комментарий для jankkhvej:

Я же написал всё:
1) IE10 работает на Windows 7+, бывают ещё XP и Vista
2) там, где ОС позволяет обновиться, часто бывает, что этого сделать нельзя — так как неясно, будет ли работать какой-то корпоративный софт на обновлённой ОС.
Евгений Степанищев (bolknote.ru) автор № 11

Комментарий для Владимир Родкин:

Видимо под клиентами подразумеваются заказчики, а не посетители ресурса.

У меня нет посетителей ресурса. Я сайты не делают.

jankkhvej № 12
Комментарий для Евгения Степанищева:

Понятно, спасибо! Я всё время ищу какую-то иную причину, почему Windows не обновляют, но тут всё честно — никаких выдуманных причин.
Виктор № 13
Евгений, а почему в данном случае вы написали «jQuery»?
Евгений Степанищев (bolknote.ru) автор № 15
Я руководствуюсь принципом, который синтезировался когда-то в споре с Пепелсбеем где-то в комментариях (лень искать): людей к транслитерированным названиям надо приучать постепенно.
Виктор Корейша № 16
А еще можно ставить в шаблоне HTML комментарии. Читаемости это не ухудшает, зато где надо пробелы убирает.