Cuando queremos abrir un enlace en una nueva ventana, la forma habitual es agregar target="_blank" después del enlace. No hay problema cuando usamos el DOCTYPE transicional (xh tml1-transitional. dtd), pero cuando lo usamos. el DOCTYPE estricto (xhtml1-strict.dtd), este método no pasará la verificación del W3C y aparecerá el siguiente mensaje de error:
"no hay ningún atributo objetivo para este elemento (en esta versión HTML)"
Resulta que bajo el estricto DOCTYPE de HTML4.01/XHTML1.0/XHTML1.1, target="_blank", target="_self" y otras sintaxis no son válidas y solo podemos implementarlas a través de JavaScript.
Un amigo preguntó por qué no se permite el uso de target="_blank". Este atributo es muy conveniente. Jaja, no sé qué piensan los expertos del W3C. Hasta donde yo sé, se trata principalmente de "facilidad de uso y amabilidad", porque los extranjeros piensan que es de mala educación abrir una nueva ventana sin el consentimiento del usuario o sin indicaciones claras. de. Independientemente de si esta cancelación es razonable o no, veamos la solución.
atributo rel
HTML4.0 agrega un nuevo atributo: rel. Este atributo se utiliza para describir la relación entre el enlace y la página que contiene el enlace, así como el destino del enlace. rel tiene muchos valores de atributos, como siguiente, anterior, capítulo, sección, etc. Lo que queremos usar es el atributo rel="externa l". El código original fue escrito así:
<a href="document.html" target="_blank">Abrir una nueva ventana</a>
Ahora se escribirá así:
<a href="document.html" rel="external">Abrir una nueva ventana</a>
Este es un método estricto. Por supuesto, debe combinarse con javascript para que sea efectivo.
El código JS completo de javascript es el siguiente:
función enlaces externos() {
si (!document.getElementsByTagName) regresa;
var anclajes = document.getElementsByTagName("a");
for (var i=0; i<anclas.longitud; i++) {
var ancla = anclas [i];
si (anchor.getAttribute ("href") &&
Anchor.getAttribute("rel") == "externo")
anclaje.target = "_blank";
}
}
window.onload = enlaces externos;
Puede guardarlo como un archivo .js (como external.js) y llamarlo a través del método de conexión externa:
<script tipo="text/javascript" src="external.js"></script>
Eso es todo.
Finalmente, me gustaría agregar que el target="new" utilizado por mi sitio web está permitido bajo el DOCTYPE transitorio, pero no cumple con el estándar estricto. Usaré el modo estricto en la próxima revisión y cambiaré todo target="new" a rel="external".