关于聊天更新的gmail聊天javascript警报

时间:2011-12-17 06:09:42

标签: javascript jquery

当聊天更新像gmail时,我希望弹出新聊天或弹出窗口... 例如,如果我在其他选项卡上并且gmail聊天已更新,那么它将显示在标题上。 我只想要这种类型的代码,它显示我的数据库何时更新或每10秒后显示一次,然后一旦我点击它,它就不应该一次又一次地显示....

2 个答案:

答案 0 :(得分:0)

我曾经为html5 Notification编写了一个插件,你可以轻松地创建一个通知:

/**
 *  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
}

答案 1 :(得分:0)

您可以使用调用php页面的ajax函数代替javascript。使用数组来累积所有消息。你说你每10秒检查一次这个页面。在聊天窗口中显示数组值。然后将数组重置为空。然后再做同样的过程。希望这个概念能够奏效。我不确定。如果你想在javascript中使用它。你应该使用js数组中的值。