2011-06-28 31 views
18

Tôi đang phát triển một ứng dụng yêu cầu người dùng đó phải được thông báo về một số sự kiện nền tức là lời mời từ người dùng khác, thời gian nhắc nhở, v.v.Làm cách nào để hiển thị thông báo bật lên cho người dùng bằng jquery?

Bất cứ khi nào sự kiện xảy ra, bộ điều khiển sẽ được hiển thị và cửa sổ nhỏ sẽ hiển thị cho người dùng.

Tôi nên tiến hành như thế nào để đạt được điều này. Công nghệ/công cụ nào sẽ giúp tôi. Tôi đang sử dụng jQuery, JSF 2.0 và Spring 3.0.

Trả lời

22

này sẽ đưa ra một thông báo tương tự như stackoverflow

jQuery

$("#notification").fadeIn("slow").append('your message'); 
$(".dismiss").click(function(){ 
     $("#notification").fadeOut("slow"); 
}); 

HTML

<div id="notification" style="display: none;"> 
    <span class="dismiss"><a title="dismiss this notification">x</a></span> 
</div> 

CSS

#notification { 
    position:fixed; 
    top:0px; 
    width:100%; 
    z-index:105; 
    text-align:center; 
    font-weight:normal; 
    font-size:14px; 
    font-weight:bold; 
    color:white; 
    background-color:#FF7800; 
    padding:5px; 
} 
#notification span.dismiss { 
    border:2px solid #FFF; 
    padding:0 5px; 
    cursor:pointer; 
    float:right; 
    margin-right:10px; 
} 
#notification a { 
    color:white; 
    text-decoration:none; 
    font-weight:bold 
} 

Ngoài ra hãy xem tại mplungjan's answer về cách lắng nghe để cập nhật máy chủ và tải nhắn

+7

Đẹp nhất. Tôi không thích nó cho bạn http://jsfiddle.net/mplungjan/xa23e/ – mplungjan

+0

@ mplungjan thats tuyệt vời, nhưng bây giờ tôi nhận thấy, OP đã yêu cầu trợ giúp phía máy chủ cũng – anu

+0

vì vậy kịch bản cần phải thăm dò ý kiến ​​máy chủ. Không có gì. setInterval và $ .get() – mplungjan

1

Jquery ui hộp thoại là những gì bạn đang tìm kiếm. Nó sẽ có ích cho bạn. Mặc dù có rất nhiều plugin khác có sẵn. Đây là đơn giản nhất ..

+0

Thực tế xem xét các ví dụ khác, giao diện người dùng jQuery là không cần thiết ở đây cả. – mplungjan

1

HTML:

<input type="button" id="pop" value="Submit"/> 
<div id="popup"> 
    <div id="topbar"> TITLE..</div> 
    <div id="content">Here is you content...</div> 
    <input type="button" id="ok" value="OK"/> 
</div> 

CSS:

#popup { background:#ccc; -moz-border-radius: 10px; width:300px; height: 200px; padding: 5px; position: absolute; left: 50%; margin-left: -150px; z-index: 500; display:none } 
#topbar { background:#ddd; -moz-border-radius: 10px; padding:5px; height:20px; line-height:20px } 
#content { padding:5px; -moz-border-radius: 10px; text-align:center } 
#ok { position: absolute; left: 140px; top: 180px } 

jQuery:

$(function(){ 
    $('#pop').click(function(){ 
     $('#popup').fadeIn().css('top',$(document).height()/2); 
    }); 
    $('#ok').click(function(){ 
     $('#popup').fadeOut(); 
    }); 
}); 
+1

Sửa lỗi bật lên css ID - thêm [fiddle] (http://jsfiddle.net/mplungjan/mmANr/) trừ chiều cao cửa sổ bật lên có lẽ cũng là một ý tưởng hay – mplungjan

2

Sử dụng mã từ @Anu's suggestion - my fiddle, bạn có thể chỉ cần thêm một cuộc thăm dò

$(document).ready(function() { 
    $(".dismiss").click(function(){$("#notification").fadeOut("slow");}); 

    setInterval(function() { 
    $.get("ping.jsp?userid=<%= userID %>",function(message) { 
     if (message) $("#notification").fadeIn("slow").html(message); 
    }); 
    ,10000); 
}) 

thông điệp có thể bao gồm một dấu thời gian để xem nếu bạn đã thông báo trước đó thay vì gửi một tin nhắn trống nếu không cần thông báo số

Lựa chọn thay thế: Long poll hoặc Comet

Các vấn đề liên quan