我想实现一个消息弹出框,具体要求:
使用b/s模式,jsp开发,客户端会只开一个固定的页面,当服务器端发布一个新的消息时,客户端自动弹出消息框,请问这个如何实现。高分等待

解决方案 »

  1.   

    是通过ajax一直监视服务器的情况么?
    如果是这样的话,你可以通过ajax时时请求,然后通过返回的responseText来判断是否有新消息。如果有的话,就进行alert提示。
      

  2.   

    用ajax进行监视,然后判断是否有新的消息,再给出提示
      

  3.   

     使用js反射机制,利用Ajax获取服务器端消息
      

  4.   

    通过ajax时时请求,然后通过返回的responseText来判断是否有新消息
      

  5.   

    使用jQuery
    效果:使用方法
    UiUtil.showInfo("your message");UiFactory.getInfoPanel = function() {
        var $infoPanel = $("#info-panel");
        if ($infoPanel.length == 0) {
            $infoPanel = $("<div id='info-panel'>");
            $infoPanel.css("z-index", settings.infoPanelZIndex);
            $infoPanel.appendTo($("body"));
        }
        
        return $infoPanel;
    }
    UiUtil.showInfo = function(info) {
        UiFactory.infoPanel.text(info);
        UiUtil.showInWindowCenter(UiFactory.infoPanel);
        
        clearTimeout(UiUtil.infoTimerId);
        // After 2 secondes, hide it.
        UiUtil.infoTimerId = setTimeout(function() {
            UiFactory.infoPanel.fadeOut();
        }, 2000);
    }
    /**
     * Show the element in the center of the window.
     */
    UiUtil.showInWindowCenter = function($elem) {
        //$elem.appendTo($("body"));
        var topX = $(window).scrollLeft();
        var topY = $(window).scrollTop();
        
        var left = ($(window).width() - $elem.width()) / 2 + topX;
        var top = ($(window).height() - $elem.height()) / 2 + topY - 20;
        
        left = left > topX ? left : topX;
        top = top > topY ? top : topY + 12;
        
        // Show the element
        $elem.offset({left: left, top: top});
        $elem.show();
        $elem.offset({left: left, top: top});
    }CSS:
    #info-panel {
        position: absolute;
        padding: 10px;
        font-size: 20px;
        width: 300px;
        color: black;
        text-shadow: 0px 1px white;
        opacity: 0.8;
        background: orange;
        text-align: center;
        
        -moz-border-radius: 5px;
        -webkit-border-radius: 5px;
        border-radius: 5px;
        
        -moz-box-shadow: 2px 2px 3px #888;
        -webkit-box-shadow: 2px 2px 3px #888;
        box-shadow: 2px 2px 3px #888;
        
        display: none;
    }
      

  6.   

    ajax  或者 iframe   但是都有一个共性就是要一直监控!
      

  7.   

    ajax  的 无状态刷新
      

  8.   

    用quartzs定时调度,然后再前台使用ajax接受数据.
      

  9.   

    UiFactory.getInfoPanel = function() {
        var $infoPanel = $("#info-panel");
        if ($infoPanel.length == 0) {
            $infoPanel = $("<div id='info-panel'>");
            $infoPanel.css("z-index", settings.infoPanelZIndex);
            $infoPanel.appendTo($("body"));
        }
        
        return $infoPanel;
    }