LinkAlert es un plugin Firefox que le muestra al usuario un Ãcono cuando hacen hover sobre un link especial, como un link a un archivo Microsoft Word (.DOC) o a un PDF.
El problema de tener a LinkAlert sólo disponible para Firefox actualmente, ha dejado de serlo ya que te presentamos un duplicado de su funcionalidad armado con Mootools.
La clase Javascript de MooTools
-
var LinkAlert = new Class({
-
-
//implements
-
Implements: [Options,Events],
-
-
//options
-
options: {
-
container: document.body,
-
extensions: {},
-
offsets: { x:6, y:-15 },
-
preloadImages: true,
-
protocols: {},
-
sticky: false,
-
onShow: function(el,image) {
-
this.image.setStyle('display','');
-
},
-
onHide: function(el,image) {
-
this.image.setStyle('display','none');
-
}
-
},
-
-
//initialization
-
initialize: function(options) {
-
//set options
-
this.setOptions(options);
-
this.extensions = new Hash(this.options.extensions);
-
this.protocols = new Hash(this.options.protocols);
-
this.image = new Element('img',{
-
src: '',
-
styles: {
-
position: 'absolute',
-
top: -200,
-
left: -200,
-
visibility: 'hidden'
-
}
-
}).inject(document.id(document.body));
-
//preload images, if necessary
-
if(this.options.preloadImages) { this.preloadImages(); }
-
//add the listeners
-
this.addListeners(this.extensions,'$=','extensions');
-
this.addListeners(this.protocols,'^=','protocols');
-
},
-
-
//give direction to links
-
addListeners: function(items,sep,type) {
-
//for every item
-
//for every link of that type
-
//if the same protocol, don't bother showing
-
if(type == 'protocol' && window.location.protocol == extension + ':') { return; }
-
//add the show/hide events
-
el.addEvents({
-
mouseenter: function(e) {
-
//position the image and give it the proper SRC
-
this.reposition(e).set('src',image);
-
//fire the event
-
this.fireEvent('show',[el,image]);
-
}.bind(this),
-
mouseleave: function(e) {
-
//fire the event
-
this.fireEvent('hide',[el,image]);
-
}.bind(this)
-
});
-
//sticky?
-
if(this.options.sticky) {
-
el.addEvent('mousemove',function(e) {
-
this.reposition(e);
-
}.bind(this));
-
}
-
},this);
-
},this);
-
},
-
-
//repositions
-
reposition: function(e) {
-
return this.image.setStyles({
-
left: e.page.x + this.options.offsets.x,
-
top: e.page.y + this.options.offsets.y
-
});
-
},
-
-
//preloads necessary images
-
preloadImages: function() {
-
var images = [this.protocols.getValues(),this.extensions.getValues()].flatten();
-
new Asset.images(images);
-
}
-
});
Opciones incluidas para LinkAlert:
- container: (por defecto: document.body) El container para buscar links.
- extensions: (por defecto: {}) Un archive objeto contenedor de extensiones e imágenes para buscar.
- offsets: (por defecto { x:6, y:-15 }) La compensación x e y del mouse que el Ãcono deberÃa mostrar.
- preloadImages: (por defecto false) Si es necesario o no precargar todas las extensiones de archivo e Ãconos de protocolo.
- protocols: (por defecto {}) Un objeto container de protocolos e imágenes para buscar.
- sticky: (por defecto false) Define si el Ãcono debe seguir al mouse mientras este hace hover sobre un link.
Eventos incluidos para LinkAlert:
- Show: Se activa cuando un Ãcono se muestra.
- Hide: Se activa cuando un Ãcono se oculta.
Ejemplo de Implementación
-
/* do it */
-
window.addEvent('domready', function() {
-
var graphicsDir = 'link-alert/';
-
var context = new LinkAlert({
-
extensions: {
-
doc: graphicsDir + 'word.png',
-
js: graphicsDir + 'js.png',
-
pdf: graphicsDir + 'pdf.png',
-
txt: graphicsDir + 'text.gif',
-
xls: graphicsDir + 'xls.png',
-
jpg: graphicsDir + 'jpg.png'
-
},
-
protocols: {
-
ftp: graphicsDir + 'ftp.png',
-
https: graphicsDir + 'secure.png',
-
'javascript:': graphicsDir + 'js.png'
-
},
-
preloadImages: true,
-
sticky: true,
-
onShow: function(el,image) {
-
this.image.fade('in');
-
},
-
onHide: function(el,image) {
-
this.image.fade('out');
-
}
-
});
-
});
Haz clic aquà para ver una demostración »
Fuente: David Walsh Blog








Comentarios recientes
- diego gutierrez arias: excelente todo le q se publica en esta pagina, es de mucha ayuda, mi pro...
- christian: Hola alguien puede pasarme los archivos ? desde ya gracias quiero probar...
- Iruma: Pues vaya que todos tienen muchas cosas que contar... Yo les puedo decir...
- A2design: Seamos realistas... hay gente que paga por usar un programa... pero yo m...
- A2design: ¿no usar gif??? desde cuando...? la consigna es no usar flash que no se...
- lara: EXELENTEEEEE...
Feed de los comentarios