UNPKG

@oroinc/autobahnjs

Version:

AutobahnJS is a JavaScript client library that implements The WebSocket Application Messaging Protocol (WAMP)

106 lines (93 loc) 2.67 kB
ab._UA_FIREFOX = new RegExp(".*Firefox/([0-9+]*).*") ab._UA_CHROME = new RegExp(".*Chrome/([0-9+]*).*") ab._UA_CHROMEFRAME = new RegExp(".*chromeframe/([0-9]*).*") ab._UA_WEBKIT = new RegExp(".*AppleWebKit/([0-9+\.]*)\w*.*") ab._UA_WEBOS = new RegExp(".*webOS/([0-9+\.]*)\w*.*") ab._matchRegex = function(s, r) { var m = r.exec(s) if (m) return m[1] return m }; ab.lookupWsSupport = function() { var ua = navigator.userAgent; // Internet Explorer if (ua.indexOf("MSIE") > -1) { if (ua.indexOf("MSIE 10") > -1) return [true,true,true] if (ua.indexOf("chromeframe") > -1) { var v = parseInt(ab._matchRegex(ua, ab._UA_CHROMEFRAME)) if (v >= 14) return [true,false,true] return [false,false,false] } if (ua.indexOf("MSIE 8") > -1 || ua.indexOf("MSIE 9") > -1) return [true,true,true] return [false,false,false] } // Firefox else if (ua.indexOf("Firefox") > -1) { var v = parseInt(ab._matchRegex(ua, ab._UA_FIREFOX)) if (v) { if (v >= 7) return [true,false,true] if (v >= 3) return [true,true,true] return [false,false,true] } return [false,false,true] } // Safari else if (ua.indexOf("Safari") > -1 && ua.indexOf("Chrome") == -1) { var v = ab._matchRegex(ua, ab._UA_WEBKIT) if (v) { if (ua.indexOf("Windows") > -1 && v == "534+") // Not sure about this test ~RMH return [true,false,true] if (ua.indexOf("Macintosh") > -1) { v = v.replace("+","").split(".") if ((parseInt(v[0]) == 535 && parseInt(v[1]) >= 24) || parseInt(v[0]) > 535) return [true,false,true] } if (ua.indexOf("webOS") > -1) { v = ab._matchRegex(ua, ab._UA_WEBOS).split(".") if (parseInt(v[0]) == 2) return [false,true,true] return [false,false,false] } return [true,true,true] } return [false,false,false] } // Chrome else if (ua.indexOf("Chrome") > -1) { var v = parseInt(ab._matchRegex(ua, ab._UA_CHROME)) if (v) { if (v >= 14) return [true,false,true] if (v >= 4) return [true,true,true] return [false,false,true] } return [false,false,false] } // Android else if (ua.indexOf("Android") > -1) { // Firefox Mobile if (ua.indexOf("Firefox") > -1) return [true,false,true] // Chrome for Android else if (ua.indexOf("CrMo") > -1) return [true,false,true] // Opera Mobile else if (ua.indexOf("Opera") > -1) return [false,false,true] // Android Browser else if (ua.indexOf("CrMo") > -1) return [true,true,true] return [false,false,false] } // iOS else if (ua.indexOf("iPhone") > -1 || ua.indexOf("iPad") > -1 || ua.indexOf("iPod") > -1) return [false,false,true] // Unidentified return [false,false,false] };