Pregunta

Estoy trabajando con un sistema de publicación que usa etiquetas personalizadas. Estos se interpretan en el servidor. El problema es que causan grandes problemas con Opera cuando se ven localmente (las etiquetas personalizadas no se interpretan).

Opera maneja estas etiquetas de manera diferente a otro navegador. Parece que está cerrando la etiqueta al final del documento (incluso si la etiqueta contiene una barra oblicua). Me pregunto si ese comportamiento se considera error o característica.

Además, si tiene alguna idea de cómo hackear dicho código para poder depurar HTML + CSS para Opera localmente (sin etiquetas personalizadas interpretadas), hágamelo saber. Gracias.

Pruebe el siguiente código para verlo en acción ( ejemplo en vivo ):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Non-standard tag behavior in Opera</title>

    <style type="text/css" media="all">
        div { background: yellow; padding: 1em; }
        nonstandardtag { border: 1px solid red; }
    </style>

</head>

<body>

<div>
    <nonstandardtag>content of non-standard tag</nonstandardtag>
    main tag content
</div>

<div>
    <nonstandardtag />
    main tag content
</div>

</body>

</html>
¿Fue útil?

Solución 3

Esto parece solucionarse en Opera 10 . Así que supongo que no era una característica.

Otros consejos

Utilizo ópera por más de 5 años. Es el navegador que mejor se acerca al estándar. La mayoría de los sitios que se ven mal en Opera son & Quot; optimizado & Quot; para IE.

Pero una pregunta obvia es, ¿por qué necesita usar etiquetas no estándar? Puede usar las etiquetas div y span para casi cualquier solución no estándar.

Corto: no es un error. A pesar del DOCTYPE, su página no se interpreta como XHTML (y esto es intencional ).

HTML simplemente no admite la sintaxis de etiqueta de cierre automático de la misma manera que XML.

En HTML, en la práctica <foo /> es lo mismo que <foo> o <foo /="">. En teoría es lo mismo que <foo></foo>&gt;.

Necesita decirle al navegador que interprete la página como X [HT] ML. DOCTYPE no es suficiente. Para hacer esto localmente, el archivo debe tener .xml o .xhtml extensión. Cuando sirve archivos a través de HTTP, debe establecer el encabezado Content-Type en application/xhtml+xml o un tipo XML similar (para archivos estáticos, generalmente text/html la extensión de archivo hace el trabajo).

Su ejemplo en vivo se sirve como <=>, por lo que no se interpretará como XHTML y no funcionará como espera.

Por cierto: XHTML no permite elementos no estándar. Si desea agregar sus propios elementos de todos modos, al menos debe usar su propio espacio de nombres.

Uno, no necesita elementos no estándar. Dos, lo que sea que reclames con tu doctype, esto no es XHTML sino HTML (como dejas claro con el <meta http-equiv="Content-Type" content="text/html. Eso obviamente significa que los navegadores usan sus analizadores HTML , y esos no ( y no debería) admitir la sintaxis abreviada de XML <element/> para elementos vacíos.

Respuesta corta: no hay garantías ni requisitos sobre lo que puede hacer un Agente de usuario si le proporciona datos con formato incorrecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top