Cuando trabajamos con ajax logramos efectos bastante buenos para nuestras páginas, pero podemos perder compatibilidad con motores de búsqueda o usabilidad con los usuarios que tienen desactivado javascript.
Una de las formas de solucionar estos inconvenientes es transformar los links ordinarios en links para ajax por medio del mismo javascript. Para eso utilizaremos el atributo rel para indicar que enlaces son los que queremos que se modifiquen:
Código :
<a href="tudestino.html" rel="ajax" >Click Aqui</a>
Código :
function cambiaMisLinks()
{
var links = $$('a[rel=ajax]'); //Busca los lnks que tenga el atributo rel="ajax"
for ( var i = 0; i < links.size(); i++ )
{
links[i].observe( 'click', abrirLink ); //Observa el evento click del link y llama a abrirLink
}
}Código :
function abrirLink( event )
{
var div = $( 'contenido' ); // Equivale a document.getElementById( 'contenido' )
var link = event.element(); // Al usar un observador no podemos usar this
// De esta manera obtenemos el elemento
new Ajax.Updater
(
div, // Es el div que se actualizara asíncronamente
link.href, // La url del link
{
parameters: { ajax : true } //Un parámetro para distinguir que se cargo por ajax
}
)
event.stop(); // De esta manera evitamos que el link nos lleve a otra pagina
}Código :
Event.observe( window, 'load', cambiaMisLinks );
Código :
new Ajax.Updater
(
div, // Es el div que se actualizara asíncronamente
link.href, // La url del link
{
onComplete: function()
{
cambiaMisLinks(); // Llamamos la función al terminar de cargar la sección con ajax
}
parameters: { ajax : true } //Un parámetro para distinguir que se cargo por ajax
}
)Código :
function nuevoEvento()
{
$( 'principal' ).fire('site:inicio''); // nuestro div principal "dispara" el evento personalizado
}
Event.observe( window, 'load', nuevoEvento );Código :
Event.observe( window, 'site:inicio', cambiarMisLinks );
Código :
new Ajax.Updater
(
div, // Es el div que se actualizara asíncronamente
link.href, // La url del link
{
onComplete: function()
{
$('principal').fire( 'site:inicio' ); //Dispara evento personalizado
}
parameters: { ajax : true } //Un parametro para distinguir que se cargo por ajax
}
)Código :
Event.observe( window, 'site:inicio', nuevaFuncion );
//o también
Event.observe( window, 'site:inicio', function(){
// Tu código aqui
} );
Código :
/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
function agregarEvento()
{
Event.observe( 'principal', 'site:initialize', cambiaMisLinks );
}
Event.observe( window, 'load', agregarEvento );
/*@end @*/