Firefox 47 в Ubuntu показывает дубликаты вызовов ajax с веб-уведомлениями

У меня есть следующий код для регистрации работника службы для получения push-уведомлений. Я вижу дубликаты вызовов ajax (в консоли разработчика) в Firefox 46 и 47 в Ubuntu. Прекрасно работает в Windows Firefox 46/47. Почему это происходит?

if ('serviceWorker' in navigator) {
    console.log('Service Worker is supported');
    navigator.serviceWorker.register(BASE_URL+'sw.js?v=3').then(function(reg) {
        console.log('here in SW', reg);
        reg.pushManager.subscribe({
            userVisibleOnly: true
        }).then(function(sub) {
                var browser='';
                var isFirefox = typeof InstallTrigger !== 'undefined';

                var isChrome = !!window.chrome && !!window.chrome.webstore;

                if(isChrome){
                    browser = 'chrome';

                }else if( isFirefox ){
                    browser = 'firefox';
                }

                if( browser != '' ){
                    var tempdata = {};
                    tempdata.usecase = 'abc';
                    console.log('sub.endpoint:', sub.endpoint);
                    tempdata.browser_reg_id = sub.endpoint.split("/")[5];
                    tempdata.browser = browser;
                    console.log('reg id:', tempdata.browser_reg_id);
                    $.post(BASE_URL + 'services/xyz/', tempdata, function (result) {
                            if(result.status)
                            {
                                    console.log('Updated success');
                            }
                            else
                            {
                                    console.log('Zero updated');
                            }
                        }, 'JSON');
                }

        }).catch(function(error) {
            console.log('here in EP', error);
        });
    }).catch(function(error) {
        console.log('here in ES', error);
    });
}

Мой SW выглядит следующим образом:

var httpHeaders = new Headers();
    //httpHeaders.append('pragma', 'no-cache');
    //httpHeaders.append('cache-control', 'no-cache');
    //httpHeaders.append('cache', 'no-cache');

var fetchInit = {
  method: 'GET',
  headers: httpHeaders
};

// Version 0.1
console.log('Started', self);
self.addEventListener('install', function(event) {
  self.skipWaiting();
  console.log('Installed', event);
});
self.addEventListener('activate', function(event) {
  console.log('Activated', event);
});

var urlToRedirect='';
self.addEventListener('push', function(event) {
  console.log('Push message', event);
  //var title = 'Push message2';
  event.waitUntil(
    /*self.registration.showNotification(title, {
      body: 'The Message',
      icon: 'images/icon.png',
      tag: 'my-tag'*/

    fetch("http://blahblabh/latest.json?"+Date.now(), fetchInit).then(function(res) {
        return res.json().then(function(data) {
        // Show notification
                urlToRedirect = data.data.url;
                return self.registration.showNotification(data.data.title, {  
                    body: data.data.body,
                    tag: data.data.tag,
                    icon: 'http://blahblabh/images/mac_fb.png' 
                });  

            });  
        }));

    //}));
});

self.addEventListener('notificationclick', function(event) {
    //console.log('Notification click: tag ', event.notification.tag);
    //alert(urlToRedirect)
    event.notification.close();
    var url = urlToRedirect;
    event.waitUntil(
        clients.matchAll({
            type: 'window'
        })
        .then(function(windowClients) {
            for (var i = 0; i < windowClients.length; i++) {
                var client = windowClients[i];
                if (client.url === url && 'focus' in client) {
                    return client.focus();
                }
            }
            if (clients.openWindow) {
                return clients.openWindow(url);
            }
        })
    );
});

Почему это происходит только для Firefox в Ubuntu. Даже в хроме это выглядит нормально.

0 ответов

Другие вопросы по тегам