Я использую уведомление в своем веб-приложении MVC вместе с SignalR.Я вызываю клиентскую функцию на определенной странице с сервера.Проблема в том, что при одновременном открытии этой страницы на двух вкладках браузера не появляется никаких уведомлений.Я должен отметить, что он работает нормально, когда страница открыта только в одной вкладке.
Я заметил, что если я помещу предупреждение прямо перед строкой, где создается объект уведомления, обе вкладки получают уведомления, и этоэто то, что я ожидаю.Заранее спасибо.
$(function () {
var notificationHub = $.connection.notificationHub;
$.connection.hub.start();
notificationHub.client.sendMessage = function (content) {
setTimeout(notifyMe(content), 10);
};
});
function notifyMe(message) {
if (!("Notification" in window)) {
alert("This browser does not support system notifications");
}
else if (Notification.permission === "granted") {
var notification = new Notification(message);
}
else if (Notification.permission !== 'denied') {
Notification.requestPermission(function (permission) {
// If the user accepts, let's create a notification
if (permission === "granted") {
var notification = new Notification(message);
}
});
}
}
Обновление: Вот сценарий, в котором коду создания уведомления предшествует предупреждение, которое заставляет его работать должным образом:
function notifyMe(message, system) {
if (!("Notification" in window)) {
alert("This browser does not support system notifications");
}
else if (Notification.permission === "granted") {
alert('hit');
var notification = new Notification(system, {
body: message,
tag: (Math.floor(Math.random() * 10)).toString(),
icon: 'Content/Images/logo.png',
dir: 'rtl',
background: '#ff0000'
});
}
else if (Notification.permission !== 'denied') {
alert('hit');
Notification.requestPermission(function (permission) {
if (permission === "granted") {
var notification = new Notification(message)
}
});
}
}
$(function () {
var notificationHub = $.connection.notificationHub;
$.connection.hub.start();
notificationHub.client.sendMessage = function (content, system) {
setTimeout(notifyMe(content, system), 10);
};
});