Разметка на тех двух страницах - все почти то же. Существует таблица с двумя столбцами.
и
элементам одного столбца (второй) все дают класс "спам".
На "хорошей" странице при загрузке его, Вы будете видеть флажок, неконтролируемый наверху. При проверке флажка второй столбец должен исчезнуть. При снятии выделения с ним второй столбец возвращается. На "плохой" странице флажок начинается проверенный. Снятие выделения с ним не имеет никакого эффекта в IE7, хотя это работает в других браузерах, которые не находятся в собственности фундаментальным злом.
Флажок сцепляется с небольшой стандартной программой JavaScript, которая просто добавляет или удаляет класс "компактный" из
тег. Существует таблица стилей, которая включает это:
Таким образом то, что должно произойти, - то, что происходит на "хорошей" странице. Однако кажется, что в IE7 (возможно, 6 также), если элементы таблицы начинаются таким образом, что, когда первоначально представлено они разрабатываются, чтобы быть невидимыми, они никогда не будут замечаться, независимо от последующих изменений DOM, который принес бы модернизированные правила в эффект и оставил бы их видимыми. (Это появляется быть проблемой с
части в особенности; я использую тот же механизм в другом месте с другими элементами, и они все хорошо работают.)
Так, вопрос: кто-либо знает о некотором взломе — однако восстающий — который может использоваться для обхождения этого идиотичного поведения? Очевидно, я мог попытаться принять меры, чтобы IE7 запустил свои представления с соответствующего набора управления переключателем так, чтобы ячейки таблицы были видимы, но в моем случае это происходит вокруг таблицы, это производится как ответ Ajax, и таким образом, это была бы большая путаница, я скорее избегу. (Таблица является действительно таблицей, также; это - дисплей табличной информации, не взлом расположения.)
Я погуглил вокруг и не нашел что-либо, которое не должно быть удивительным, если Вы рассматриваете, сколько хитов Вы добираетесь от "поисков" ошибки расположения IE7.
Это ошибка рендеринга. IE6 / 7 не использует правильную модель отображения таблицы. К сожалению, я не могу вспомнить конкретное имя / ярлык для этой конкретной ошибки, и я не могу найти авторские ресурсы, подтверждающие это.
По крайней мере, я нашел 2 способа исправить это с помощью CSS.
Самый простой - используйте visibility: hidden; вместо display: none; . К сожалению, это не очень хорошо работает, если у вас есть больше столбцов после столбца, который нужно переключить, или если у вас есть граница таблицы. Это все еще оставляет место. Добавление position: absolute; в .junk устраняет эту проблему в FF, но вы возвращаетесь к той же проблеме рендеринга в IE.
Взлом, который злоупотребляет ошибочной способностью IE применять стили для