На моем сайте IE7, похоже, игнорирует некоторые селекторы атрибутов CSS.Странно то, что это происходит только тогда, когда страница поступает с рабочего сервера.Если у меня есть точно такой же код на моем персональном сервере или сохранен на жестком диске, он работает нормально.Вот пример, который вызывает проблему:
<!DOCTYPE HTML>
<html><head>
<title>IE display test</title>
<style type="text/css">
[type=button] {
display: block;
}
</style>
</head>
<body>
<input type="button" value="Button 1"/>
<input type="button" value="Button 2"/>
<input type="button" value="Button 3"/>
</body></html>
Поскольку отображение на кнопках установлено на «блокирование», они должны располагаться вертикально.Но только когда страницы обслуживаются с моего рабочего сервера , они располагаются горизонтально.Когда я использую панель инструментов разработчика для проверки стиля, я не вижу свойства «display», как обычно.Единственное, о чем я могу подумать, это может вызвать URL страницы или заголовки ответа, поступающие с сервера.Я могу, возможно, понять это, экспериментируя, но это было бы неудобно и отнимает много времени, поэтому, прежде чем я это сделаю, я хотел бы спросить: Почему это происходит и что с этим можно сделать?
РЕДАКТИРОВАТЬ: Я придумал Скрипка .На этом сайте все выглядит хорошо.
РЕДАКТИРОВАТЬ 2: Вот заголовки ответа, поступающие с рабочего сервера:
HTTP / 1.1 200 OK
Сервер: Apache-Coyote / 1.1
Тип содержимого: text / html; charset = utf-8
Язык содержимого: en-US
Длина содержимого: 291
Дата: среда, 18 января2012 21:32:48 GMT
EDIT 3: Вот заголовки ответа от моего личного сервера:
HTTP / 1.1 200 OK
Дата: среда, 18 января 2012 21:37:30 GMT
Сервер: Apache
Варьируется: Accept-Encoding
Content-Encoding: gzip
Content-Length: 176
Keep-Alive: timeout = 2, max = 100
Соединение: Keep-Alive
Content-Type: text / html; charset = utf-8
Производственный сервер не применяет сжатие gzipпотому что он делает это только для файлов выше определенного размера.Если я добавлю кое-что, чтобы сделать файл достаточно большим, он использует gzip, и я все еще вижу проблему в IE7, так что, похоже, это не имеет ничего общего с gzip.
Я попытался настроить свой персональный сервер дляотправьте заголовок «Content-Language», такой как рабочий сервер, и это не вызвало проблемы.
Я не знаю, имеет ли какое-либо другое отношение к этому какое-либо отношение к другим заголовкам.Я могу попробовать их протестировать, но это будет довольно сложно, поэтому это может занять некоторое время.
РЕДАКТИРОВАТЬ 4: Я не замечаю этой проблемы в IE8, даже если я включаю совместимостьРежим.Я тестирую это на Windows XP, на случай, если это имеет значение.
РЕДАКТИРОВАТЬ 5: Я поместил кодировку в заголовок Content-Type со своего личного сервера.Это не вызвало проблемы.
РЕДАКТИРОВАТЬ 6: Вот несколько снимков экрана: Подано с рабочего сервера:
Подано с моего личного сервера:
Загружен прямо с моего жесткого диска:
РЕДАКТИРОВАТЬ 7: Я наконец понял, что вызывает это!Я попытался ввести javascript:alert(document.compatMode)
в адресную строку.На личных и прямых страницах показывалось CSS1Compat
, а на рабочей странице показывалось BackCompat
. Похоже, что браузер находится в режиме причуд только тогда, когда он рендерит страницу с рабочего сервера. Пока что я понятия не имею, почему это происходит или что с этим делать.
РЕДАКТИРОВАТЬ 8: Я пропустил деталь: Скриншот фактически взят из моей среды разработки, которая имитирует рабочий сервер, но работает на моем собственном компьютере.Это сделало бы ответ BoltClock правдоподобным, за исключением того факта, что та же проблема обнаруживается на нашем фактическом рабочем сервере, который находится на IP-адресе, соответствующем 173. . . *.Почему я вижу проблему на этом сервере?Это также частный IP-адрес?Может быть полезно знать, что фактический рабочий сервер использует https.
РЕДАКТИРОВАТЬ 9: После истечения срока действия вознаграждения проблема перестала отображаться на рабочем сервере, но она все еще отображается в моей среде разработчика (10.1.10.34). Понятия не имею почему. Я думаю, что я буду винить в этом космические лучи, если я не смогу выдвинуть еще одно доказательство.