varias selectores mismo llamar hijos excluir estilo elemento ejemplo clases clase avanzados aplicar html css internet-explorer internet-explorer-7 css-selectors

html - selectores - IE7 ignora el selector de atributos CSS solo en las páginas que vienen del servidor de producción



selector padre css (7)

Tenga en cuenta que ciertas condiciones pueden hacer que Internet Explorer muestre páginas en un modo de compatibilidad de documentos diferente al especificado en la página web. Estos incluyen, pero no se limitan a, las siguientes situaciones:

  • La vista de compatibilidad está habilitada para la página.

  • La página se carga en la zona Intranet e Internet Explorer está configurado para usar la Vista de compatibilidad para las páginas cargadas desde la zona Intranet.

  • Internet Explorer está configurado para mostrar todos los sitios web en la Vista de compatibilidad.

  • Internet Explorer está configurado para usar la Lista de vistas de compatibilidad, que especifica un conjunto de sitios web que siempre se muestran en la Vista de compatibilidad.

  • Las herramientas de desarrollo se utilizan para anular la configuración especificada en la página web.

  • La página web encontró un error de diseño de página e Internet Explorer está configurado para recuperarse automáticamente de dichos errores al volver a abrir la página en la Vista de compatibilidad.

Fuente: http://msdn.microsoft.com/en-us/library/cc288325%28VS.85%29.aspx

De esto podemos derivar su ejecución de un sitio en su intranet local, es decir, 7 no puede desactivar este procesamiento, ya que en ie8 puede detener el procesamiento de sitios de intranet locales en modo compatible.

10.xxx servidor de producción de direcciones ip

file: // host esencialmente local

http: // a través de su servidor local

ACTUALIZAR:

Disculpe, IE tiene numerosos problemas ejecutándose en la intranet, IE8 + es el problema anterior. Como mencionó, IE7 no usa el modo compatible. Tiene características y estándar. Sabiendo que Microsoft puede haberlo estropeado en una de las actualizaciones de parches de ie7 pero odio las suposiciones, así que si alguien sabe, por favor avíseme.

Para resolver el problema, me temo que no puedo darle una solución de nivel de software o un cambio de hardware. Si siempre va a ser un sitio de intranet, recomendé actualizar los navegadores de red a ie8 mínimo.

Tengo un html, css fix sin embargo (sé que esto no es lo que quieres):

<!DOCTYPE HTML> <html> <head> <title>IE display test</title> <style type="text/css"> #buttons { } #button { display:block; } </style> </head> <body> <div id="buttons"> <input id="button" type="button" value="Button 1"/> <input id="button" type="button" value="Button 2"/> <input id="button" type="button" value="Button 3"/> </div> </body> </html>

Parece que no le gusta [type="buttons"] usando display:block; .

En mi sitio web, IE7 parece estar ignorando ciertos selectores de atributos CSS. Lo extraño es que solo sucede cuando la página proviene del servidor de producción. Si tengo el mismo código exacto en mi servidor personal o si lo guardé en mi disco duro, funciona bien. Aquí hay un ejemplo que causa el problema:

<!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>

Dado que la visualización de los botones está configurada en "bloque", deben estar dispuestos verticalmente. Pero solo cuando la página se sirve desde mi servidor de producción , se organizan horizontalmente. Cuando uso la barra de herramientas del desarrollador para inspeccionar el estilo, no veo la propiedad "mostrar" como normalmente lo hago. Lo único en lo que puedo pensar que posiblemente cause esto es la URL de la página o los encabezados de respuesta provenientes del servidor. Tal vez pueda resolverlo experimentando, pero eso sería un inconveniente y tomaría mucho tiempo, así que antes de hacerlo, me gustaría preguntar: ¿Por qué sucede esto y qué se puede hacer al respecto?

EDIT: se me ocurrió un Fiddle . Se ve bien en ese sitio.

EDIT 2: aquí están los encabezados de respuesta que vienen del servidor de producción:

HTTP / 1.1 200 OK
Servidor: Apache-Coyote / 1.1
Tipo de contenido: texto / html; conjunto de caracteres = utf-8
Content-Language: en-US
Contenido-Longitud: 291
Fecha: miércoles, 18 de enero de 2012 21:32:48 GMT

EDIT 3: aquí están los encabezados de respuesta de mi servidor personal:

HTTP / 1.1 200 OK
Fecha: miércoles, 18 de enero de 2012 21:37:30 GMT
Servidor: Apache
Variar: Aceptar-Codificar
Codificación de contenido: gzip
Contenido-Longitud: 176
Keep-Alive: timeout = 2, max = 100
Conexión: Keep-Alive
Tipo de contenido: texto / html; conjunto de caracteres = utf-8

El servidor de producción no está aplicando la compresión gzip porque solo lo hace para archivos que tienen un tamaño superior. Si agrego algunas cosas para hacer que el archivo sea lo suficientemente grande, usa gzip y aún veo el problema en IE7, por lo que esto no parece tener nada que ver con gzip.

Intenté configurar mi servidor personal para enviar un encabezado de "Lenguaje de contenido" como el servidor de producción y eso no provocó el problema.

No sé si alguno de los otros encabezados tiene algo que ver con esto. Puedo probarlos pero será un poco complicado, así que puede llevar algo de tiempo.

EDIT 4: no veo este problema en IE8, incluso si activo el modo de compatibilidad. Estoy probando esto en Windows XP, en caso de que eso importe.

EDITAR 5: puse el conjunto de caracteres en el encabezado Content-Type de mi servidor personal. No provocó el problema.

EDIT 6: Aquí hay algunas capturas de pantalla: Servido desde el servidor de producción:

Servido desde mi servidor personal:

Cargado directamente desde mi disco duro:

EDIT 7: ¡Por fin tengo una idea de lo que está causando esto! Intenté ingresar javascript:alert(document.compatMode) en la barra de direcciones. Las páginas personales y directas mostraban CSS1Compat pero la página de producción mostraba BackCompat . Parece que el navegador está en modo peculiar solo cuando está renderizando la página desde el servidor de producción. Hasta ahora, no tengo idea de por qué sucede esto o qué hacer al respecto.

EDIT 8: omití un detalle: la captura de pantalla es en realidad de mi entorno dev, que emula el servidor de producción pero se ejecuta en mi propia computadora. Eso haría que la respuesta de BoltClock pareciera plausible, excepto por el hecho de que el mismo problema aparece en nuestro servidor de producción real, que está en una dirección IP que coincide con 173 .. . *. ¿Por qué veo el problema en ese servidor? ¿Es esa también una dirección IP privada? Puede ser útil saber que el servidor de producción real está usando https.

EDIT 9: ya que la recompensa expiró, el problema dejó de aparecer en el servidor de producción pero aún aparece en mi entorno de desarrollo (10.1.10.34). No tengo ni idea de porqué. Creo que voy a echarle la culpa a los rayos cósmicos a menos que pueda encontrar alguna evidencia más.


Acabo de encontrar esto con IE8 e IE9 y encontré la solución.

Ahora esto puede no traducirse exactamente a IE7, pero debería apuntarle en la dirección correcta.

  • Busque en los menús un elemento llamado "Vista de compatibilidad".
  • Dale un clic y se abrirá un cuadro de diálogo donde puedes agregar sitios web que se mostrarán en "Vista de compatibilidad".
  • Busque debajo de la lista la casilla de verificación "Mostrar sitios de intranet en Vista de compatibilidad"
  • Desmarcarlo.

Parece que Microsoft considera una parte del host de la "intranet" cuando es:

  • unidos al mismo dominio,
  • identificado por un nombre de host no calificado (ex "server" vs "server.example.com"), o
  • identificado por una dirección IP privada (10.xxx, 172.16-31.xx, 192.168.xx)

También parece que nada se considera "intranet" si el sistema cliente no está unido a un dominio.


Acabo de jugar con el código en su servidor personal (eliasz.net), un archivo que se entrega a través del protocolo file: // y que se sirve en un servidor local.

Su servidor personal y cuando se procesa a través del protocolo file: // se procesan correctamente, ya que se procesan en modo "borde" (el último, en lugar del modo de compatibilidad). Sin embargo, en su servidor de producción y en su servidor de desarrollo, se están procesando en modo de compatibilidad. Como dijo BoltClock, las intranets hacen esto por defecto. Obviamente, esto se aplicaría a su servidor de desarrollo (en una IP local como 10.1.10.34).

Creo que el servidor de producción también está en su red local, aunque tiene una IP estática pública. En otras palabras, cuando está en la red local, el servidor de producción se sirve a través de la red local, no a través de Internet. Por lo tanto, IE7 todavía lo ve como un sitio de intranet. Use nslookup para verificar cómo IE7 está resolviendo el nombre de dominio.

Para solucionar el problema, puede agregar esto a su encabezado:

<meta http-equiv="X-UA-Compatible" content="IE=9" >

y luego desactive la configuración en su IE que hace que los sitios de intranet se muestren en modo de compatibilidad.


Como se comentó en los comentarios, de acuerdo con esta respuesta de treinta puntos y esta respuesta de scunliffe , parece ser el efecto de una característica de seguridad en Internet Explorer. Su servidor de producción vive dentro de su intranet, y se está accediendo a él a través de una dirección IPv4 de clase A privada ( 10.*.*.* ), Que sospecho que básicamente hace que IE7 renderice las páginas en modo peculiar ( e IE8 y las versiones posteriores). en vista de compatibilidad ).

Sin embargo, me temo que todo esto es solo una conjetura. No he podido reproducir su problema en ningún navegador IE en ningún sistema, al menos no en su servidor personal o con mis propios archivos. Si su servidor de producción está abierto al acceso público, no solo técnicamente, tal vez podría proporcionar un enlace a él para que podamos depurar aún más, ya que el problema está obviamente localizado solo en su servidor de producción .


No creo que la respuesta sea qué servidor se desprendió, sino más bien un caso de agregar comillas dobles alrededor del valor en el selector CSS.

Prueba esto:

<!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>


Tengo la sensación de que tiene algo que ver con el servidor (según el apache / coyote, ¿supongo que estás usando Tomcat?) Y algo que ver con espacios en blanco, BOF, o configuración incorrecta de utf-8 (he escuchado de problemas donde el encabezado dice ser utf-8 pero no lo es). Si tiene algún espacio en blanco antes de la declaración html, eso también podría hacer que entre en modo peculiar. Si bien puedo estar equivocado, tengo la sensación de que su problema es similar a este. ¿Por qué es ie7 siempre en modo de Quirks?


Veo que una página es .html y la otra es .php. Es posible que su página php tenga algún carácter (tal vez oculto) antes del doctype. Podría hacer una diferencia en cómo IE acepta HTML y CSS.