Foros del Web » Programando para Internet » Javascript »

Ventana emergente como en gmail

Estas en el tema de Ventana emergente como en gmail en el foro de Javascript en Foros del Web. Hola a tod@s... Quisiera saber si alguien conoce algún tutorial o ha hecho algún ejemplo para que aparezca una ventana (como cuando recibes un correo ...
  #1 (permalink)  
Antiguo 14/12/2010, 04:39
 
Fecha de Ingreso: enero-2009
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
Ventana emergente como en gmail

Hola a tod@s...

Quisiera saber si alguien conoce algún tutorial o ha hecho algún ejemplo para que aparezca una ventana (como cuando recibes un correo de gmail y tienes abierto google talk) pero en el navegador... para informar de un aviso...



Supongo que habrá que utilizar alguna herramienta como jquery o algo similar...

un saludo y gracias por adelantado!!!
  #2 (permalink)  
Antiguo 14/12/2010, 05:43
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 5 meses
Puntos: 53
Respuesta: Ventana emergente como en gmail

Hola, justo estos días estoy trabajando en un desktop y necesitaba usar un sistema de mensajería como el que propones, te he preparado un ejemplo para que veas en acción el siguiente plugin:

http://www.quizzpot.com/demos/extjs/...fications.html

Ahora, el código responsable es el siguiente:
Código Javascript:
Ver original
  1. /**
  2.  * Ext.ux.ToastWindow
  3.  *
  4.  * @author  Edouard Fattal
  5.  * @date    March 14, 2008
  6.  *
  7.  * Modified by Crysfel Villa
  8.  * @date December 09, 2010
  9.  *
  10.  * @class Ext.ux.ToastWindow
  11.  * @extends Ext.Window
  12.  */
  13.  
  14. Ext.namespace("Ext.ux");
  15.  
  16.  
  17. Ext.ux.NotificationMgr = {
  18.     positions: []
  19. };
  20.  
  21. Ext.ux.Notification = Ext.extend(Ext.Window, {
  22.     initComponent: function(){
  23.         Ext.apply(this, {
  24.             iconCls     : this.iconCls || 'x-icon-information',
  25.             cls         : 'x-notification',
  26.             width       : 200,
  27.             autoHeight  : true,
  28.             plain       : false,
  29.             draggable   : false,
  30.             bodyStyle   : 'text-align:center'
  31.         });
  32.         if(this.autoDestroy) {
  33.             this.task = new Ext.util.DelayedTask(this.hide, this);
  34.         } else {
  35.             this.closable = true;
  36.         }
  37.         Ext.ux.Notification.superclass.initComponent.call(this);
  38.     },
  39.     setMessage: function(msg){
  40.         this.body.update(msg);
  41.     },
  42.     setTitle: function(title, iconCls){
  43.         Ext.ux.Notification.superclass.setTitle.call(this, title, iconCls||this.iconCls);
  44.     },
  45.     onRender:function(ct, position) {
  46.         Ext.ux.Notification.superclass.onRender.call(this, ct, position);
  47.     },
  48.     onDestroy: function(){
  49.         Ext.ux.NotificationMgr.positions.remove(this.pos);
  50.         Ext.ux.Notification.superclass.onDestroy.call(this);
  51.     },
  52.     cancelHiding: function(){
  53.         this.addClass('fixed');
  54.         if(this.autoDestroy) {
  55.             this.task.cancel();
  56.         }
  57.     },
  58.     afterShow: function(){
  59.         Ext.ux.Notification.superclass.afterShow.call(this);
  60.         Ext.fly(this.body.dom).on('click', this.cancelHiding, this);
  61.         if(this.autoDestroy) {
  62.             this.task.delay(this.hideDelay || 5000);
  63.        }
  64.     },
  65.     animShow: function(){
  66.         this.pos = 0;
  67.         while(Ext.ux.NotificationMgr.positions.indexOf(this.pos)>-1)
  68.             this.pos++;
  69.         Ext.ux.NotificationMgr.positions.push(this.pos);
  70.         this.setSize(200,100);
  71.         this.el.alignTo(document, "br-br", [ -20, -42-((this.getSize().height+10)*this.pos) ]);
  72.         this.el.slideIn('b', {
  73.             duration: 1,
  74.             callback: this.afterShow,
  75.             scope: this
  76.         });
  77.     },
  78.     animHide: function(){
  79.         Ext.ux.NotificationMgr.positions.remove(this.pos);
  80.         this.el.ghost("b", {
  81.             duration    : 1,
  82.             scope       : this,
  83.             callback    : this.destroy
  84.         });
  85.     },
  86.    
  87.     focus: Ext.emptyFn
  88.  
  89. });

Este es un plugin para ExtJS, quizás una librería bastante pesada para lo que necesitas, dejo a tu consideración si quieres usar el ejemplo, yo como todo mi desktop esta basado en ExtJS no tengo problema en usar el plugin

Quizás en unos días prepare un tutorial sobre el plugin, te recomiendo visitar mi blog (Está en mi firma) donde tengo mucho material gratuito

Saludos

Última edición por stock; 14/12/2010 a las 05:49
  #3 (permalink)  
Antiguo 14/12/2010, 07:31
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 6 meses
Puntos: 1012
Respuesta: Ventana emergente como en gmail

supongo que esos avisos, son guardados en una bd. entonces has de implicar un lenguaje del lado del servidor, así que yo te diría que usases o ajax (un poco pesado, por que has de llamar una y otra vez a la función usando un temporizador) o comet (con lo que tienes una conexión abierta, permanente en segundo plano)
  #4 (permalink)  
Antiguo 20/12/2010, 05:25
 
Fecha de Ingreso: enero-2009
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Ventana emergente como en gmail

stock muchas gracias por tu respuesta... voy a echarle un vistazo a tu codigo a ver si consigo echarlo a andar...

Cita:
Iniciado por IsaBelM Ver Mensaje
supongo que esos avisos, son guardados en una bd. entonces has de implicar un lenguaje del lado del servidor, así que yo te diría que usases o ajax (un poco pesado, por que has de llamar una y otra vez a la función usando un temporizador) o comet (con lo que tienes una conexión abierta, permanente en segundo plano)
IsaBelM muchas gracias tb por tu comentario... efectivamente para que esa ventana aparezca en el momento adecuado habra que utilizar llamadas al servidor usando AJAX (es lo qeu tenia pensado)... es un poco pesado pero a ver, el cliente es el que manda!!!! jejeje

Etiquetas: emergente, gmail, ventanas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:39.