Foros del Web » Programando para Internet » Javascript »

Abrir pop-up si hay una nueva noticia

Estas en el tema de Abrir pop-up si hay una nueva noticia en el foro de Javascript en Foros del Web. Hola, necesito que cuando haya una nueva noticia se abra un pop-up al medio de la pagina, seria un pop-up pero no de ventana si ...
  #1 (permalink)  
Antiguo 05/09/2009, 07:30
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 3 meses
Puntos: 9
Abrir pop-up si hay una nueva noticia

Hola, necesito que cuando haya una nueva noticia se abra un pop-up al medio de la pagina, seria un pop-up pero no de ventana si no un pop-up que se abra dentro de la pagina, el sistema de noticias es cutenews, ya pregunte alli pero no saben como hacerlo...

Si no sim se puede, tambien estaria bien simplemente con un boton o texto que parpadee cuando haya una nueva noticia
  #2 (permalink)  
Antiguo 05/09/2009, 13:17
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Abrir pop-up si hay una nueva noticia

Hola

Hace poco monté un prototipo en el que se consulta una bd cada x tiempo y si hay nuevos registros, estos son mostrados en una ventana emergente. Si te interesa dímelo y te paso los script. Esta montado en (AJAX, javascript y ASP)

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 06/09/2009, 05:43
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 3 meses
Puntos: 9
Respuesta: Abrir pop-up si hay una nueva noticia

vale gracias, lo necesitare.
Saludos,
  #4 (permalink)  
Antiguo 07/09/2009, 04:10
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Abrir pop-up si hay una nueva noticia

Hola

No es el foro apropiado pero aquí lo tienes. Espero que te ayude

VentanaMessenger.html

Código javascript:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml"lang="es" xml:lang="es">
  3. <head>
  4. <meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>
  5. <script type="text/javascript" src="./leerjsdeajax.js"></script>
  6. <script type="text/javascript">
  7.  function creaAjax(){
  8.     var ajaxs = ["Msxml2.XMLHTTP","Msxml2.XMLHTTP.4.0","Msxml2.XMLH TTP.5.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];
  9.     var ajax = false;
  10.     for(var i=0 ; !ajax && i<ajaxs.length ; i++){
  11.         try{
  12.             ajax = new ActiveXObject(ajaxs[i]);   // Internet Explorer
  13.         }
  14.         catch(e) {
  15.             ajax = false;
  16.         }
  17.     }
  18.     if(!ajax && typeof XMLHttpRequest!='undefined') {
  19.         ajax = new XMLHttpRequest();  // Firefox, Opera 8.0+, Safari
  20.     }
  21.     return ajax;
  22. }
  23.  
  24.  
  25. function Ventana() {
  26. var ajax=creaAjax();
  27. var objetosel = document.getElementById("contenedor");
  28. ajax.open('GET','ventanamessenger_ajax.asp',true);
  29. ajax.send(null);
  30. ajax.onreadystatechange = function() {
  31.  
  32.         if (ajax==null){
  33.         alert ("Tu navegador web no soporta AJAX!");
  34.         return;
  35.     }
  36.  
  37.         if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3) {
  38.                                         objetosel.innerHTML = "Cargando ...";
  39.             }
  40.  
  41.                 else if (ajax.readyState==4){
  42.                     if(ajax.status==200){  
  43.  
  44.         var scs=ajax.responseText.extractScript();
  45.             objetosel.innerHTML = ajax.responseText.stripScript();
  46.         scs.evalScript();
  47.  
  48.  
  49.                    }
  50.                     else if (ajax.status==404)
  51.                                              {
  52.  
  53.                                     objetosel.innerHTML = "La dirección no existe";
  54.                                              }
  55.                                      else
  56.                                              {
  57.                                     objetosel.innerHTML = "Se ha producido un error";
  58.                                              }
  59.                                     }
  60.                   }
  61.        
  62. }
  63.  
  64. window.setInterval("Ventana()",90000);
  65. window.onload = function () {setTimeout("Ventana()",1000);};
  66. </script>
  67. <style type="text/css">
  68. #VentanaTipoMsgr { position:fixed; z-index:15000; right:2px; bottom:-2px; padding:0px; width:207px; height:123px; background:transparent url(cuerpo_ventanamodal.gif); }  
  69. body > div#VentanaTipoMsgr { position:fixed; z-index:15000; right:2px; bottom:-2px; padding:0px; width:207px; height:123px; background:transparent url(cuerpo_ventanamodal.gif); }
  70. #VentanaTipoMsgr a { font-family:tahoma; font-size:9px; color:#59616E; font-weight:bold; text-decoration:none; }
  71. #btn_vm_paginador a{ background-color:#FFFFFF; color:#59616E; font-family:Arial, Helvetica, sans-serif; font-size:9px; font-weight:900;text-decoration:none;padding:2px; border: 1px solid #C9C9C9;border-width: 1px 1px 1px 1px; }
  72. </style>
  73. </head>
  74. <body>
  75. <table border="1" width="800px">
  76. <tr height="500px">
  77. <td>Contenido de la página</td>
  78. </tr>
  79. </table>
  80.  
  81.  
  82. <div id="contenedor">
  83. </div>
  84.  
  85. <div id="VentanaTipoMsgr" style="bottom:-200px; display:none;">
  86. <div style="position:absolute; top:3px; right:5px;cursor: pointer;"><img id="btn_vm_cerrar" src="cuerpo_cerrar.gif" width="15px" height="20px" border="0" /></div>
  87. <div id="CabezaMsg" style="padding:6px 6px 6px 3px; text-align:left; font-family:tahoma; font-size:11px; font-weight:bold; color:#000000;"></div>
  88. <div id="CuerpoMsg" style="position:absolute; top:30px; right:5px; left:5px; text-align:left; color: #59616E; font-size: 9px; font-family:verdana;"></div>
  89. <div style="clear:both;"></div>
  90. </div>
  91.  
  92.  
  93. </body>
  94. </html>


leerjsdeajax.js

Código javascript:
Ver original
  1. var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
  2. /**
  3. * Eval script fragment
  4. * @return String
  5. */
  6. String.prototype.evalScript = function()
  7. {
  8.         return (this.match(new RegExp(tagScript, 'img')) || []).evalScript();
  9. };
  10. /**
  11. * strip script fragment
  12. * @return String
  13. */
  14. String.prototype.stripScript = function()
  15. {
  16.         return this.replace(new RegExp(tagScript, 'img'), '');
  17. };
  18. /**
  19. * extract script fragment
  20. * @return String
  21. */
  22. String.prototype.extractScript = function()
  23. {
  24.         var matchAll = new RegExp(tagScript, 'img');
  25.         return (this.match(matchAll) || []);
  26. };
  27. /**
  28. * Eval scripts
  29. * @return String
  30. */
  31. Array.prototype.evalScript = function(extracted)
  32. {
  33.                 var s=this.map(function(sr){
  34.                 var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
  35.                 if(window.execScript){
  36.                 window.execScript(sc);
  37.                 }
  38.                 else
  39.                 {
  40.                  window.setTimeout(sc,0);
  41.                 }
  42.                 });
  43.                 return true;
  44. };
  45. /**
  46. * Map array elements
  47. * @param {Function} fun
  48. * @return Function
  49. */
  50. Array.prototype.map = function(fun)
  51. {
  52.         if(typeof fun!=="function"){return false;}
  53.         var i = 0, l = this.length;
  54.         for(i=0;i<l;i++)
  55.         {
  56.                 fun(this[i]);
  57.         }
  58.         return true;
  59. };


ventanamessenger_ajax.asp


Código asp:
Ver original
  1. ' Nos conectamos a la bd
  2. ' Hacemos la consulta
  3.  
  4. set rs = oConn.Execute(SQL)
  5.  
  6. registros = rs.getrows()
  7. rs.Close
  8. Set rs = Nothing
  9. oConn.Close
  10. Set oConn = Nothing
  11.  
  12. TextoMensaje = ""
  13. IF UBound(registros,2) = 0 then
  14. TextoMensaje =  "'De: <a href=autor target=_blank>" & registros(De,0) & "</a><br />Asunto: <a href=mensaje target=_blank>" & registros(Asunto,0) & "</a><br/>Mensaje: " & Mid(registros(Contenido,0),1,80) &"'"
  15.  
  16. ELSE
  17.  
  18. For i = 0 to UBound(registros,2)
  19. If i <> 0 then
  20. TextoMensaje = TextoMensaje & ","
  21. End If
  22.  
  23. If i = 0 then ' es el primero de varios
  24. TextoMensaje = TextoMensaje & "'De: <a href=\'autor\' target=\'_blank\'>" & registros(De,i) & "</a><br />Asunto: <a href=\'mensaje\' target=\'_blank\'>" & registros(Asunto,i) & "</a><br/>Mensaje: " & Mid(registros(Contenido,i),1,80) &"<br /><br /><div id=\'btn_vm_paginador\' align=\'center\'><a href=\'javascript:void(0);\' onclick=\'vm_paginador("&i+1&");\'>Siguiente &raquo;</a></div>'"
  25. Elseif i < UBound(registros,2) then
  26. 'TextoMensaje = TextoMensaje & "'De: <a href=\'autor\' target=_blank\'>" & registros(De,i) & "</a><br />Asunto: <a href=\'mensaje\' target=\'_blank\'>" & registros(Asunto,i) & "</a><br/>Mensaje: " & Mid(registros(Contenido,i),1,80) &"<br /><br /><div id=\'btn_vm_paginador\' align=\'center\' onclick=\'vm_paginador("&i-1&");\'>&laquo; Anterior</div>&nbsp;&nbsp;&nbsp;<div id=\'btn_vm_paginador\' align=\'center\'  onclick=\'vm_paginador("&i+1&");\'>Siguiente &raquo;</div>'"
  27. TextoMensaje = TextoMensaje & "'De: <a href=\'autor\' target=_blank\'>" & registros(De,i) & "</a><br />Asunto: <a href=\'mensaje\' target=\'_blank\'>" & registros(Asunto,i) & "</a><br/>Mensaje: " & Mid(registros(Contenido,i),1,80) &"<br /><br /><div id=\'btn_vm_paginador\' align=\'center\'><a href=\'javascript:void(0);\' onclick=\'vm_paginador("&i-1&");\'>&laquo; Anterior</a>&nbsp;&nbsp;&nbsp;<a href=\'javascript:void(0);\' onclick=\'vm_paginador("&i+1&");\'>Siguiente &raquo;</a></div>'"
  28. Else ' es el último
  29. TextoMensaje = TextoMensaje & "'De: <a href=\'autor\' target=\'_blank\'>" & registros(De,i) & "</a><br />Asunto: <a href=\'mensaje\' target=\'_blank\'>" & registros(Asunto,i) & "</a><br/>Mensaje: " & Mid(registros(Contenido,i),1,80) &"<br /><br /><div id=\'btn_vm_paginador\' align=\'center\'><a href=\'javascript:void(0);\' onclick=\'vm_paginador("&i-1&");\'>&laquo; Anterior</a></div>'"
  30. End If
  31.  
  32. Next 'i
  33. END IF
  34. %>
  35.  
  36. <script type="text/javascript">
  37. var msg = new Array(<%=TextoMensaje%>);
  38. var Ventana_Modal = {};
  39. Ventana_Modal.banner = {
  40.  posicion : {
  41.  bajar_pos : '-127',
  42.  subir_pos : '-4'
  43.  }
  44. };
  45. Ventana_Modal.banner.hoja = 'posicion';
  46. // Variables Globales
  47. var vmDivID = 'VentanaTipoMsgr';
  48. var Retraso = 5 * msg.length;
  49.  
  50.  
  51. vm_retraso(Retraso);
  52.  
  53. //--[Funciones]-----------------------------------------------------------------//
  54.  
  55. var btn_vm_cerrar_elem = document.getElementById('btn_vm_cerrar');
  56. btn_vm_cerrar_elem.onclick = function (){
  57. vm_mover(vmDivID,Ventana_Modal.banner[Ventana_Modal.banner.hoja].bajar_pos, "' + msg[0] + '",'bajar');
  58. return false;
  59. }
  60.  
  61.  
  62. function vm_paginador(mensajeID) {
  63.  var soportado = (document.getElementById);
  64. if (!soportado) return;
  65. var elMsg = document.getElementById('CuerpoMsg');
  66. elMsg.innerHTML = msg[mensajeID];
  67. }
  68.  
  69.  
  70. function vm_retraso(seg){
  71. seg = seg || 0;
  72. setTimeout('vm_mover(vmDivID,' + Ventana_Modal.banner[Ventana_Modal.banner.hoja].subir_pos + ', "' + msg[0] + '");',1000 * seg);
  73. setTimeout('vm_mover(vmDivID,' + Ventana_Modal.banner[Ventana_Modal.banner.hoja].bajar_pos + ', "' + msg[0] + '",\'bajar\');',15000 * msg.length);
  74. }
  75.  
  76. var elemento
  77. var alto
  78. var leyenda
  79. function vm_mover(elemID,x,txt,direccion){
  80. elemento = elemID
  81. alto = x
  82. leyenda =  txt
  83.  
  84. var soportado = (document.getElementById);
  85. if (!soportado) return;
  86. var DIVruta = document.getElementById(elemento);
  87. var Cortina = parseInt(DIVruta.style.bottom);
  88. var cabecera = document.getElementById('CabezaMsg');
  89. var texto = document.getElementById('CuerpoMsg');
  90.  
  91. DIVruta.style.display = 'block';
  92. if(direccion == 'bajar'){
  93.  
  94. if(Cortina > x){
  95. Cortina -= 5;
  96. DIVruta.style.bottom = Cortina + 'px';
  97. setTimeout('vm_mover(elemento,alto,leyenda,\'bajar\');',15);
  98. }
  99. }else{
  100. if(Cortina < x){
  101. Cortina += 5;
  102. DIVruta.style.bottom = Cortina + 'px';
  103. cabecera.innerHTML = "Tienes (<span style='color:#FF0000;'><%=UBound(registros,2)+1%></span>) mensajes sin leer";
  104. texto.innerHTML = leyenda;
  105. setTimeout('vm_mover(elemento, alto,leyenda);',15);
  106. }
  107.  }
  108. }
  109. </script>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 08/09/2009, 07:43
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 3 meses
Puntos: 9
Respuesta: Abrir pop-up si hay una nueva noticia

Me puedes explicar un poco como funciona tu script? Por cierto, funciona con cutenews?

Última edición por SeaPirates; 08/09/2009 a las 07:48
  #6 (permalink)  
Antiguo 08/09/2009, 08:58
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 5 meses
Puntos: 56
Respuesta: Abrir pop-up si hay una nueva noticia

Tu popup quieres mostrarlo en todas las páginas o solo en donde aparecen las noticias?.
A que le estas llamando nueva noticia, a la última noticia o a la que fue añadido hace 1 ó 3 días?
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #7 (permalink)  
Antiguo 08/09/2009, 11:15
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Abrir pop-up si hay una nueva noticia

Cita:
Iniciado por SeaPirates Ver Mensaje
Me puedes explicar un poco como funciona tu script? Por cierto, funciona con cutenews?
A grandes rasgos se trata de hacer una consulta a la bd via ajax. En la respuesta además de enviar los registros filtrados se envía javascript para poder desplegar y plagar la capa con los datos obtenidos de la bd. Pero lo mejor es que lo pruebes y veras que es sencillo de entender.

Con respecto a si funciona con cutenews, pues no lo se. Pero creo que tu pregunta está mas enfocada a si se puede adaptar a ese sistema y la respuesta continua siendo no los ya que nunca he usado ese sistema

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 23:20.