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