Lorem Ipsum/DOL Differet Solmena

Separat existentie 2010 Unee MYT por scientie, musica, sport etc, litot Europa usa li sam Vocabular Lingues, differe solmen in li grammatica, li pronunciation. Delete this widget in Dashboard and add yours. This is just an example. Read More

[gtug-bsas] [Ayuda] Extensión en Chrome

martes, 10 de enero de 2012

Para el que quiera entretenerse un rato con un poco de JavaScript o reírse de mi ignorancia (cualquiera de las 2 opciones es valida) tengo un pequeño problema con una extensión que estoy armando (uno de mis 64813351 proyectos)

Primero les cuento que tiene que hacer:
  1. Detecta automáticamente que uno está esperando en una pagina de espera tipo re-dirección, como por ejemplo " http://oneclickmoviez.com/down/?http://www.imdb.com/title/tt1634122/"
  2. Aplica una función sobre la URL
  3. Actualiza el Tab del navegador con la nueva URL (carga la nueva URL)
  4. Muestra un icono a la derecha de la URL con la leyenda "Just skiped a count page!"
La idea es mostrarle al cliente que la extensión hace algo :P


Ahora lo que está haciendo:
  1. Detecta automáticamente que uno está esperando en una pagina de espera tipo re-dirección, como por ejemplo " http://oneclickmoviez.com/down/?http://www.imdb.com/title/tt1634122/"
  2. Aplica una función sobre la URL
  3. Actualiza el Tab del navegador con la nueva URL (carga la nueva URL)
  4. Muestra un icono a la derecha de la URL con la leyenda "Just skiped a count page!" pero mientras en el Tab se está mostrando la URL vieja
  5. En cuanto se carga la nueva URL desaparece el icono de la derecha
Hasta donde yo entiendo el problema está en que el callback de chrome.tabs.update se ejecuta cuando se termina de hacer el update y no cuando el update se termina de cargar (espero se entienda)


Les dejo el código JavaScript para el que entienda un poco mas que yo (y tenga ganas)


var sites = {
ocmz : {
needle : 'http://oneclickmoviez.com/down/?',
fc : function(getit) {
return getit.replace("http://oneclickmoviez.com/down/?", "");
}
},
simhost : {
needle : 'http://simhost.com.ar/hosting.php',
fc : function(getit) {
return getit.replace("hosting.php", "");
}
}
}
function compararUrls(tabId, changeInfo, tab) {
if(changeInfo.status === "loading") {
for(key in sites) {
if(tab.url.indexOf(sites[key]['needle']) > -1) {//Comparamos si estamos en uno de los sitios del objecto
var newurl = sites[key]['fc'](tab.url);//Aplicamos la funcion correspondiente a ese sitio
chrome.tabs.update(tab.id, {//vamos a la nueva URL
url : newurl
}, function(tab) {//callback
chrome.pageAction.show(tab.id);//Mostamos el icono
});
}
}
}
}
chrome.tabs.onUpdated.addListener(compararUrls);



Desde ya muchas gracias,
Saludos,
Juan S. Simon

0 comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.