nota automatica

sábado, 25 de febrero de 2012

Abrir todos los enlaces en otra ventana


Ya hemos visto cómo abrir los enlaces en otra ventana usando el atributo target='_blank' que se aplica directo en el enlace que se desea que se abra aparte.
Pero muchos preguntan si se puede usar un código que abra TODOS los enlaces en otra ventana, sobre todo quienes tienen muchas entradas y es un poco cansado editar enlace por enlace.
Podemos hacer que de forma automática los vínculos se abran en otra pestaña y para ello vamos a ver dos formas, una es forzar todos los enlaces a que se abran aparte y otra es dando la opción al usuario que él decida si se abren en otra ventana o en la misma.

Forzar todos los enlaces
El primero es de lo más sencillo, sólo hay que entrar a Diseño > Edición de HTML y pegar después de <head> lo siguiente:
<base target='_blank'/>

Con ese simple atributo todos los enlaces sin excepción, se abrirán aparte.

A opción del usuario
Esta otra opción es un script de Joen que permite dos cosas; una es que el usuario decida a través de una casilla (checkbox) si todos los enlaces se abren en una ventana nueva y otra que tú puedes elegir poner dos excepciones dentro del script, es decir, puedes elegir que todos los enlaces que no pertenezcan a tu blog se abran aparte o bien, que todos los enlaces incluyendo el tuyo se abran aparte.
Sólo hay que entrar en Diseño > Elementos de la página > Añadir gadget > HTML/Javascript y ahí pegar lo siguiente:
<div class="linkprefs">
<p style="display: block;"><input id="linkprefs" value="linkprefs" name="linkprefs" onclick="setCheckbox(document.getElementById(&#39;linkprefs&#39;).checked);" type="checkbox" />
<label for="linkprefs">Abrir los enlaces en otra ventana</label></p><span></span>
<script type="text/javascript">addEvent(window, 'load',loadLinkPrefs);</script>
</div>


<script type='text/javascript'>
<!--
/*
Link Target Preferences v.1.1
http://www.noscope.com/journal/2004/10/link-target-preferences
*/

// Estas URLs seran consideradas internas y se ignoraran
var url_1 = "http://nombre-de-mi-blog.blogspot.com";
var url_2 = "http://nombre-de-mi-otro-blog.blogspot.com";

// El valor "true" abre los enlaces en nueva ventana por defecto, "false" los abre en la misma
var open_blank_default = true;

// Titulo Blog - se usa solo para no crear interfencian con las cookies
// No espacios, ni caracteres especiales

var site_title = "nombre-de-mi-blog";
// FIN configuracion

// Cookie Functions
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
// Checkbox Loader
function loadLinkPrefs () {
if (readCookie(site_title+"_linkprefs_cookie")) {
initVal = readCookie(site_title+"_linkprefs_cookie"); // Load cookied preference
} else {
createCookie(site_title+"_linkprefs_cookie", true, 20000)
initVal = open_blank_default; // If no cookie is set
}
openBlank = initVal;
setCheckbox(eval(initVal))
}
// Set Checkbox State
function setCheckbox(state) {
openBlank = state;
document.getElementById('linkprefs').checked = state;
setTargets();
createCookie(site_title+"_linkprefs_cookie", state, 20000)
}
// Configure Link Targets
function setTargets() {
var link, l = 0;
if (openBlank == true) {
while (link = document.links[l++]) {
// Open in _blank, except all links starting with...
if (link.href.indexOf(url_1) == -1 && link.href.indexOf(url_2) == -1 && link.href.indexOf('javascript') == -1) link.target = '_blank';
}
} else {
while (link = document.links[l++]) {
// Open in _top, except all links starting with...
if (link.href.indexOf(url_1) == -1 && link.href.indexOf(url_2) == -1 && link.href.indexOf('javascript') == -1) link.target = '_top';
}
}
}
// Event Listener, by Scott Andrew
function addEvent(obj, evType, fn) {
if (obj.addEventListener) {
obj.addEventListener(evType, fn, true);
return true;
} else if (obj.attachEvent) {
var r = obj.attachEvent('on'+evType, fn);
return r;
} else {
return false;
}
}
//-->
</script>

Si quieres que los enlaces de tu blog (internos) no se abran aparte entonces cambia la URL que está en rojo por la de tu blog, puedes poner dos blogs. Todos los enlaces que dirijan a una parte de esas páginas NO se abrirán en otra ventana. Igual deberás poner donde se indica el nombre de tu blog sin espacios ni caracteres especiales.

En caso de que quieras que todos los enlaces, incluso los de tu blog se abran en una ventana nueva entonces cambia esas direcciones por cualquier otra, incluso puedes dejarlo tal y como está ahora.
Aquí lo interesante es que marcando la casilla el usuario decidirá que se abran los enlaces en otra ventana, si los quiere ahí mismo dejará la casilla en blanco.

Ambas opciones son bastante útiles, elige la que creas más apropiada para tu blog. En cualquiera de las dos podrás hacer que todos los links, incluyendo los de las imágenes se puedan abrir en otra pestaña o ventana sin necesidad de editar cada enlace.
Imprimir artículo

No hay comentarios:

Publicar un comentario

Mil Trucos Blogger