Manuel Gonz�lez Noriega escribi�:
On Apr 12, 2005 10:33 AM, [EMAIL PROTECTED] <
[EMAIL PROTECTED]> wrote:
Hola:

Pasando validaciones a mi sitio web me salta que el atributo target de la
etiqueta 'a' no existe en XHTML 1.0 estricto.

Mi pregunta es entonces, c�mo definir que el enlace se abra en una nueva
ventana o en la misma.

Soluciones por orden de deseabilidad:

1. Contribuye a una web mejor no abriendo links en una ventana nueva
2. Elige un doctype que se adapte a lo que quieras hacer, no al reves. Si necesitas target y no lo hay en Strict, cambia a Transitional
3. Utiliza un DTD propio que permita target (
http://www.alistapart.com/articles/customdtd/)
4. Utiliza un rel espec�fico en los enlaces + javascript para a�adir el comportamiento. (http://www.sitepoint.com/article/standards-compliant-world)

Aporto mi propia versi�n del punto 4.

Ya que estamos utilizando JavaScript, podemos ahorrarnos el marcado de los enlaces externos con `rel` e identificarlos mediante expresiones regulares.

Esta es mi sugerencia:

var targetExternal = function(e) {
        if (!document.getElementsByTagName) {
                // no hacemos nada en navegadores obsoletos
                return false;
        }
        var currentHost = document.location.hostname;
        var links = document.getElementsByTagName('a');
        var re = new RegExp('^http(s)?://' + currentHost);
        for (var i = 0; i < links.length; i++) {
                if (links[i].href.match(re)) { // el enlace apunta al
                                               // mismo servidor
                        // descomentar la siguiente l�nea
                        // en caso de duda
                        // alert(links[i].href + ' ' + 'SI');
                } else {
                        // ver comentario anterior
                        // alert(links[i].href + ' ' + 'NO');
                        links[i].target = '_blank';
                }
        }
}

// si tenemos m�s manejadores de eventos para window.onload
// a�adir el evento como se muestra en
// http://www.scottandrew.com/weblog/articles/cbs-events
// en caso contrario, esto bastar�:
window.onload = targetExternal;

Todo este c�digo podr�a ir en un fichero externo que se cargar�a mediante `<script type="text/javascript" src="dondesea.js"></script>`.

Y ya de paso, podr�amos combinar el script con un checkbox para permitir que el usuario decida.

Agradecer�a vuestros comentarios, pues se me est� ocurriendo convertir este mail en el post de hoy para mi g�es[1].

Salud,
Choan

PS: Manuel, estoy contigo, IE es el �nico navegador decente XD
--
Dizque. Cosas que me van y me vienen
[1] http://dizque.lacalabaza.net/

Mundo Du. Cuentos breves, relatos sorprendentes
http://du.lacalabaza.net/
--
I don't need any of that SQL stuff -- I just want a database!

_______________________________________________
Lista de distribuci�n Ovillo
Para escribir a la lista, envia un correo a [email protected]
Puedes modificar tus datos o desuscribirte en la siguiente direcci�n: 
http://ovillo.org/mailman/listinfo/ovillo

Responder a