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. Даже в хроме это выглядит нормально.