2010-01-08 19 views
9

Navegación a través del código fuente de la aplicación StockTrader muestra de Microsoft, me encontré con este fragmento en todos los archivos aspx:¿Por qué usar metaetiqueta Content-Style-Type para css externos?

<meta http-equiv="Content-Style-Type" content="text/css"/> 
<title>.NET StockTrader Portfolio</title> 
<link rel="stylesheet" href="StockTrader.css" type="text/css" /> 

Por qué tienen la etiqueta meta cuando la etiqueta de enlace lo dice todo? ¿Me estoy perdiendo de algo?

+5

En realidad, el validador HTML5 se atraganta. – Moshe

+0

Noté que solo Firefox estaba extraviando algunas de mis páginas, profundizando más. Encontré que tenía esta metaetiqueta en mi pero tenía un error tipográfico en el parámetro de contenido. ¡¡Parece que Firefox es el único navegador que se preocupa !! – Octopus

Respuesta

13

La metaetiqueta "Content-Style-Type" se usa para establecer el tipo de estilo predeterminado para el documento. En la práctica, esto no parece tan útil, ya que la mayoría de las personas especifica específicamente los tipos de estilo cada vez que se usan, como en la etiqueta <link> en su pregunta. Esta declaración en particular también parece redundante. According to the W3:

Los agentes de usuario deberían determinar el lenguaje de hojas de estilo por defecto para un documento acuerdo con los siguientes pasos (mayor a menor prioridad):

  1. Si cualquier declaración META especifican el "Content Style-Type ", el último en la secuencia de caracteres determina el idioma predeterminado de la hoja de estilos.
  2. De lo contrario, si cualquiera de las cabeceras HTTP especifican el "Content-style-type", el última en el flujo de caracteres determina la hoja lenguaje de estilo por defecto.
  3. De lo contrario, el idioma predeterminado de la hoja de estilo es "text/css".

Así que en teoría, el uso de "Content-style-type" para establecer el valor predeterminado a "text/css" se acaba anulando lo que el navegador habría asumido todos modos, aunque tal vez es un seguro contra un servidor web de la picaresca que podría intentar establecer algo en los encabezados HTTP.

Probablemente se haya generado en un intento entusiasta de cumplir con los estándares.

rápida editar nota: Ese documento W3 he vinculado al hecho afirma que un documento que tiene elementos que utilizan un atributo de estilo sin definir un lenguaje de hojas de estilo por defecto es un documento incorrecto. Sin embargo, nunca antes había visto esto como un problema en un validador.

+3

Microsoft ... "intento entusiasta de cumplir con los estándares" ... ¿me estoy perdiendo algo? jeje. +1 Gran respuesta. –

+0

El validador no lo plantea como un problema, no es algo que pueda expresarse en una DTD. La validez es solo un subconjunto de la conformidad. – Quentin

16

La razón por la que, en teoría, necesita una configuración Content-Style-Type es de estilo en línea atributos:

<div style="color: red;"> 

Qué lenguaje de estilo es que en? A diferencia de las etiquetas <style> y <link rel="stylesheet">, no existe un mecanismo de atributo type que indique al navegador qué idioma es ese: de ahí el tipo de contenido-estilo-documento global.

Lo mismo se aplica a Content-Script-Type y controlador de eventos en línea atributos:

<div onclick='alert("hello")'> 

Qué idioma es ese? En realidad, es igualmente válido en JavaScript y VBScript; en IE podría ser cualquiera. En teoría, debe darle al navegador un encabezado/meta Content-Script-Type para contarlo. Incluso con un JavaScript simple, es posible que desee cambiar el dialecto configurando parámetros de tipo como text/javascript;version=1.6 o e4x=1 (si desea usar literales E4X XML, lo cual no hace porque son un vil error).

En la práctica, nada de esto es de alguna utilidad en absoluto, ya que el CSS por defecto es el único lenguaje de estilo en realidad se puede utilizar, muchos navegadores no prestan ninguna atención a Content-Style-Type todos modos, y no hay ningún navegador presta atención a Content-Script-Type .

(Ah, bueno, que necesita de estilo en línea y atributos controlador de eventos de todos modos?)

+0

He visto la publicación similar anteriormente, pero nunca recibí esta respuesta .. +1 aquí hay una publicación anterior ... espera una respuesta casi similar ... (http://stackoverflow.com/questions/1939949/html-do-we -really-need-different-doctypes) –

3

Es un desperdicio de ancho de banda. Nadie realmente hace nada con eso. (Es tan inútil que ni siquiera está incluido en HTML5.)

0

Técnicamente, no hace la diferencia, ya que se supone que CSS es utilizado por todos los principales navegadores.

0

Como han dicho otros, esto establece el valor predeterminado para los estilos en línea y los enlaces. Esto cae dentro de la categoría de cosas que pueden no ser necesarias pero que deberían incluirse. Se define en http://www.w3.org/TR/REC-html40/present/styles.html#default-style y otros carteles han notado que todos los principales navegadores lo asumen. Pero aún debe agregarse porque los navegadores no son los únicos consumidores de archivos HTML. Pueden ser importados o procesados ​​por otros programas que pueden seguir las especificaciones con más cuidado que los navegadores.

Cuestiones relacionadas