У меня есть приложение .NET, которое отправляет пользователям предупреждение javascript, когда другой пользователь добавляет что-то новое. Однако, если каждый из 12 других пользователей что-то добавит, появятся 12 предупреждений подряд. Мне нужен только один, первый. Есть ли способ очистить все предупреждения при нажатии первого? Спасибо.
@poke Как бы вы проверили, нажал ли пользователь предупреждение. Также имейте в виду, что есть тысячи пользователей.
Нельзя ли это сделать на стороне клиента, где вы поднимаете тревогу? Если предупреждение отображается в настоящее время, не показывайте его снова, то же самое с щелчком по предупреждению, установкой флага или чем-то еще, говорящим, отображать их или нет.
@Tyriddik Я бы сделал это только на стороне клиента. Сервер отправляет уведомление клиенту, а затем клиент определяет, как это визуализировать. Если оповещение уже активно, просто пропустите его.
Хорошо, поэтому я понял, как это сделать, выполнив следующие действия.
var alertHub = $.connection.EventHub;
var alertVisable = false;
// Set the Alert method
alertHub.client.Alert = function () {
if (alertVisable === false) {
alertVisable = true;
//alert("New Data Available!");
if (confirm("Additional comments are now available, would you like to load them?")) {
refreshPage();
}
else {
setTimeout(function () {
alertVisable = false;
}, 300000)
}
}
}
$.connection.hub.start().done();
Я устанавливаю для переменной значение false при загрузке и меняю ее на true при вызове предупреждения. Больше никаких предупреждений не будет, пока для переменной снова не будет установлено значение true. В моем случае я сказал кнопке отмены не устанавливать для переменной значение false в течение 5 минут. Надеюсь, это поможет другим.
Может быть, просто не создавайте новые оповещения на стороне клиента, а проверьте, действительно ли вам нужно создавать новые.