2011-12-17 3 views
0

Я хочу всплывающие окна в новом чате или всплывающих окнах, когда чат обновляется как gmail ... Например, если я на другой вкладке, а чат gmail обновляется, то он отображается по заголовку. I просто хочу этот тип кода, который показывает, когда моя база данных обновляется или через каждые 10 секунд, и после того, как я нажал на нее, это не должно появляться снова и снова ....javascript alert like gmail chat on chat updation

+0

Как использовать всплывающие окна типа Growl? http://webtoolkit4.me/2009/08/13/jquery-growl-likenotification-systems/ – djot

ответ

0

Я однажды написал плагин для html5 Уведомление, с это вы можете создать уведомление легко:

/** 
* Notification 
* @author: ijse 
* @require: Chrome10+ 
* @params: Same as webkitNotifications.create[HTML]Notification() 
* @usage: 
*  new Notify("http://www.baidu.com").onshow(function() { 
*    alert("show"); 
*   }).onclose(function() { 
*    alert("close"); 
*   }).show(); 
*/ 
window.Notify = function() { 
    var _params = arguments; 
    // Validate arguments 
    if(_params.length == 0) { 
     console.error("Notify need at least one argument"); 
     return ; 
    } 
    // Check browser support 
    if(!window.webkitNotifications) { 
     console.error("Your browser does not support webkitNotifications feature!!"); 
     return ; 
    } 

    var _onclose, _onclick, _onerror, _onshow; 
    var _notification, _replaceId, _showFlag = false; 

    function bindEvents() { 
     // Add event listeners 
     // In W3C, display event is called show 
     _notification.addEventListener("display", _onshow, false); 
     _notification.addEventListener("click", _onclick, false); 
     _notification.addEventListener("error", _onerror, false); 
     _notification.addEventListener("close", _onclose, false); 

     if(_replaceId) 
      _notification.replaceId = _replaceId; 
     // !!IMPORTANT&&WEIRD!! remove next line no events will work 
     var t = _notification; 
    } 
    function createfn(permission) { 
     // About permission on Chrome: 
     //  PERMISSION_ALLOWED (0) indicates that the user has granted permission to scripts with this origin to show notifications. 
     //  PERMISSION_NOT_ALLOWED (1) indicates that the user has not taken an action regarding notifications for scripts from this origin. 
     //  PERMISSION_DENIED (2) indicates that the user has explicitly blocked scripts with this origin from showing notifications. 
     if(permission == 0) { 
      // If permission is allowed 
      // Create notification 
      if(_params.length == 1) 
       _notification = window.webkitNotifications.createHTMLNotification(_params[0]); 
      else 
       _notification = window.webkitNotifications.createNotification(_params[0],_params[1],_params[2]); 

      // Bind events 
      bindEvents(); 

      // Show, if yes flag 
      !!_showFlag && _notification.show(); 
     } else { 
      if(_onerror) 
       _onerror.call(this); 
      console.error("Notification permission is denied!!"); 
     } 
    } 

    // If permission already allowed, do not require again 
    if(window.webkitNotifications.checkPermission() != 0) { 
     // Require permission from user 
     window.webkitNotifications.requestPermission(function() { 
      createfn.call(this, window.webkitNotifications.checkPermission()); 
     }); 
    } else { 
     createfn.call(this, window.webkitNotifications.checkPermission()); 
    } 

    // Return handler methods 
    return { 
     onclose: function(fn) { _onclose = fn; return this; }, 
     onclick: function(fn) { _onclick = fn; return this; }, 
     onerror: function(fn) { _onerror = fn; return this; }, 
     onshow : function(fn) { _onshow = fn; return this; }, 

     show: function(replaceId) { 
      _replaceId = replaceId; 
      if(_notification) { 
       // Notification already been created 
       bindEvents(); 
       _notification.show(); 
      } else { 
       // Flag yes to show 
       _showFlag = true; 
      } 
      return _notification; 
     }, 
     cancel: function() { 
      _notification.cancel(); 
     } 
    } // return handler 
} 
0

Вместо Javascript вы можете использовать Ajax функцию, которая вызывает страницу PHP. используйте массив для накопления всех сообщений. вы сказали, что проверяете эту страницу каждые 10 секунд. отобразите значения массива в окне чата. затем сбросьте массив на пустой. Затем повторите тот же процесс. Надеюсь, что эта концепция будет работать. Я не уверен. Если вы хотите это в javascript. вы должны использовать значения в массиве js.