【问题标题】:browser notification only once for all opened tabs per site对于每个站点的所有打开的标签,浏览器通知仅一次
【发布时间】:2016-05-25 03:52:14
【问题描述】:

我有一个由 C# ASP.Net MVC 5.0 提供支持的新闻站点,我想在管理员添加/编辑或删除新闻时向客户端浏览器推送通知。
所以我在我的模板中添加了一个信号器脚本,该脚本用于所有页面。

_Layout.cshtml

var notificationsHub = $.connection.notificationHub;
$.connection.hub.start();
jQuery(function($) {
    notificationsHub.client.Toast = function (title, body) {
        var options = {
            body: body,
        };
        var notification = new Notification(title, options);
    };
});

并将此代码添加到新闻添加/编辑/删除完成后重定向的页面

<script>
    $.connection.hub.start().done(function() {
        notificationsHub.server.toast('@NotificationHub.Type.ToString()', '@Html.Raw(NotificationHub.Title)', '@Html.Raw(NotificationHub.Body)');
    });
</script>

当我添加/编辑/删除新闻时,它可以正常工作,但问题是它会将通知推送到我网站中所有打开的选项卡。是否有避免这种情况发生并每个站点仅显示一个浏览器通知的技巧?

【问题讨论】:

    标签: c# asp.net asp.net-mvc signalr


    【解决方案1】:

    然后你必须知道打开标签的数量和使用的 URL。有关出于隐私原因不希望这样做的讨论,请参阅“How to get the number of tabs opened of my web in a browser using jquery?”SO 问题。

    【讨论】:

    • 在这种情况下,知道我的网站打开的标签页数有什么帮助?
    【解决方案2】:

    好的,我在SO question 中找到了答案。
    诀窍是在选项中使用tag

    var notificationsHub = $.connection.notificationHub;
    $.connection.hub.start();
    jQuery(function($) {
        notificationsHub.client.Toast = function (title, body) {
            var options = {
                body: body,
                tag: 'my-unique-id',
            };
            var notification = new Notification(title, options);
        };
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 2011-06-04
      • 2018-03-31
      • 2015-12-13
      相关资源
      最近更新 更多