Una de las cosas más potentes que nos ofrece jQuery es la de poder modificar el contenido del DOM de la página con Javascript que no sea intrusivo. Así, podemos hacer cosas de optimización del código generado. Entre otras cosas, porque hay veces que el código/contenido no es generado por nosotros directamente, si no por terceros.
En este caso, la idea es revisar el código para chequear que los enlaces externos tienen un target blank. Es decir, una estructura del siguiente tipo:
Manual Web
Por cuestiones de accesibilidad os recomiendo que intentéis no utilizar el target blank. Ya que haréis que se pierda el foco de la ventana. Es por ello que este código podemos utilizarlo para los dos casos: poner un blank en los enlaces externos o bien, eliminar todos los blank. Mucho mejor la segunda opción. :-)
Pero pongámonos manos a la obra. Parto de la base de que os habéis leido, o al menos echado un vistazo, al artículo de inicialización en jQuery llamado Hola Mundo con jQuery.
La primera idea es acceder a los elementos HTML que representan el enlace. Es decir, a los anchor (A). Esto lo conseguimos directamente con la función $.
$(a)
Si bien, nos interesan aquellos que empiecen por «http» y que el dominio de inicio no sea el nuestro (en mi caso «lineadecodigo»). Así la expresión de selección sería la siguiente:
$("a[href^='http']")
.not("a[href^='http:\/\/lineadecodigo']")
Si quieres que sean varios dominios, puedes concatenarlos dentro del selector .not(). El selector ..not() es el que hemos utilizado para eliminar del filtro los enlaces de nuestro dominio.
$("a[href^='http']")
.not("a[href^='http:\/\/lineadecodigo'],a[href^='http:\/\/www.manualweb']")
Una vez que tenemos el selector que nos localiza los enlaces que nos interesa, ahora lo que tenemos que hacer es utilizar es .attr(), la cual nos permite a añadir un atributo. En nuestro caso target=»_blank». Así el código quedaría de la siguiente forma:
$("a[href^='http']")
.not("a[href^='http:\/\/lineadecodigo'],a[href^='http:\/\/www.manualweb']")
.attr({target: "_blank"});
Espero que el código os sea de ayuda.
Vía: 10REM