Как отобразить всплывающее уведомление пользователю с помощью jquery?
Я разрабатываю приложение, которое требует, чтобы пользователь был уведомлен о некоторых фоновых событиях, то есть приглашении от другого пользователя, времени напоминания и т.д.
Всякий раз, когда происходит событие, контроллер будет уведомлен, и пользователю должно быть отображено небольшое окно.
Как я должен приступить к достижению этого. Какая технология/инструмент мне поможет. Я использую jQuery, JSF 2.0 и Spring 3.0.
Ответы
Ответ 1
это даст уведомление, подобное потоку 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
}
Также посмотрите ответ mplungjan о том, как прослушивать обновления сервера и загружать сообщения
Ответ 2
Использование кода из @Ану предложение - моя скрипка, вы можете просто добавить опрос
$(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);
})
сообщение может содержать метку времени, чтобы узнать, был ли вы ранее уведомлен, вместо отправки пустого сообщения, если не требуется никаких сведений.
Альтернативы: Длительный опрос или Comet
Ответ 3
Диалог Jquery ui - это то, что вы ищете. Это вам пригодится. Хотя есть много других плагинов. Это самое простое.
Ответ 4
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();
});
});