En mi último artículo escribí sobre la creación de Bookmarklets como una manera rápida de añadir funcionalidad a páginas y aplicaciones web. Sin embargo el desarrollo de un bookmarklet tiene dos desventajas: La limitación de caracteres y la constante recreación del favorito después de cambiar el código.
Estas dos desventajas se pueden solucionar si cargamos el código Javascript de un archivo externo. En este caso el bookmarklet sólo contiene el código para cargar el javascript externo y sólo hay que cambiarlo si la URL de nuestro archivo javascript ha cambiado. El archivo externo no tiene ninguna limitación de caracteres.
(function(url,e,s,b,d){
e=document.createElement('div');
e.innerHTML='Cargando...';
e.style.color='black';
e.style.padding='20px';
e.style.position='fixed';
e.style.zIndex='9999';
e.style.fontSize='3.0em';
e.style.border='2px solid black';
e.style.right='40px';
e.style.top='40px';
e.style.background='white';
document.body.appendChild(e);
s=document.createElement('script');
s.type = 'text/javascript';
s.src = url;
s.onload = s.onreadystatechange = function(){
if (!b && (!(d = this.readyState) || d == 'loaded' || d == 'complete')){
e.parentNode.removeChild(e);
}
};
document.documentElement.childNodes[0].appendChild(s);
})('AQUÍ LA URL AL ARCHIVO JAVASCRIPT EXTERNO');
El código de arriba es un ejemplo de como hacerlo. Lo primero que hace es crear un elemento para mostrar que estamos cargando el archivo. Luego crea un elemento SCRIPT para cargar el javascript externo. Cuando este se haya cargado, quitamos el elemento de 'Cargando...', y el código del archivo externo se ejecutará.
Para usarlo tenéis que pegar el código de arriba en el generador de bookmarklets del artículo pasado. Entonces tenéis que reemplazar el texto 'AQUÍ LA URL AL ARCHIVO JAVASCRIPT EXTERNO' con la URL del archivo externo. Después de crear el bookmarklet y guardarlo como favorito ya está listo para usar.
Si el código del javascript externo se cambia, simplemente recargamos la página y volvemos a cargar el bookmarlet, y el nuevo código se ejecutará.
