阻止服务工作者在Safari上运行

时间:2017-08-01 14:41:18

标签: javascript ios safari service-worker

我有一个服务工作者,我正在使用chrome和firefox中的推送通知,我怎样才能将服务工作者排除在Safari上运行,因为它会导致异常。我尝试了几种不同的方法来检测用户代理是否是safari,但即使它是Safari,它总是被检测为false。

我使用的最后一种检测方法如下:

// Firefox 1.0+
var isFirefox = typeof InstallTrigger !== 'undefined';

// Safari 3.0+ "[object HTMLElementConstructor]" 
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { 
return p.toString() === "[object SafariRemoteNotification]"; })
(!window['safari'] || (typeof safari !== 'undefined' && 
safari.pushNotification));

// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;

// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;

// Chrome 1+
var isChrome = !!window.chrome && !!window.chrome.webstore;

// Blink engine detection
var isBlink = (isChrome || isOpera) && !!window.CSS;

var ua = navigator.userAgent.toLowerCase();
var safariWindows = ua.indexOf("safari/") !== -1 && ua.indexOf("windows") 
!== -1 && ua.indexOf("chrom") === -1;


if (!isSafari && !safariWindows) {
 //run service worker
}

0 个答案:

没有答案