Skip to content

Instantly share code, notes, and snippets.

@YusukeHirao
Last active December 11, 2015 12:38
Show Gist options
  • Save YusukeHirao/4602313 to your computer and use it in GitHub Desktop.
Save YusukeHirao/4602313 to your computer and use it in GitHub Desktop.
ブラウザサポート
var Support = (function (w) {
var d = w.document,
dE = d.documentElement,
notIn = function (property) {
return property === void 0;
},
disavailableAddEventListener = notIn(w.addEventListener);
availablePosStyle = !notIn(dE.style.posTop);
isTouchable = !notIn(w.ontouchstart) || !!w.navigator.msPointerEnabled;
isIE = !!d.uniqueID;
ltIE6 = disavailableAddEventListener && notIn(dE.style.maxHeight);
ltIE7 = disavailableAddEventListener && notIn(d.querySelectorAll);
ltIE8 = disavailableAddEventListener && notIn(d.getElementsByClassName);
ltIE9 = isIE && notIn(w.Worker);
isIE6 = isIE && ltIE6;
isIE7 = isIE && ltIE7 && !ltIE6;
isIE8 = isIE && ltIE8 && !ltIE7;
isIE9 = isIE && ltIE9 && !ltIE8;
isIE10 = isIE && !ltIE9;
isMoz = !!w.sidebar;
isOpera = !!w.opera;
isWebkit = !d.uniqueID && !isOpera && !isMoz && !!w.localStorage;
isChrome = isWebkit && !notIn(d.webkitHidden);
isSafari = isWebkit && !isChrome && !isTouchable;
ltSafari4 = isSafari && notIn(w.matchMedia);
ltSafari5 = isSafari && notIn(w.FileReader);
isSafari4 = isSafari && ltSafari4;
isSafari5 = isSafari && ltSafari5 && !ltSafari4;
isSafari6 = isSafari && !ltSafari5;
isMobileIE = isTouchable && isIE10;
isMobileWebkit = isTouchable && isWebkit;
isMobileChrome = isMobileWebkit && isChrome;
isAndroid = isMobileWebkit && notIn(w.EventSource);
ltAndroid21 = isAndroid && notIn(w.onhashchange);
ltAndroid22 = isAndroid && notIn(w.Blob);
ltAndroid23 = isAndroid && notIn(w.FileReader);
ltAndroid3 = isAndroid && notIn(w.ArrayBuffer);
isAndroid21 = isAndroid && ltAndroid21;
isAndroid22 = isAndroid && ltAndroid22 && !ltAndroid21;
isAndroid23 = isAndroid && ltAndroid23 && !ltAndroid22;
isAndroid3 = isAndroid && ltAndroid3 && !ltAndroid23;
isAndroid4 = isAndroid && !ltAndroid3;
isMobileSafari = isMobileWebkit && !isAndroid && !isMobileChrome;
return {
touch: isTouchable,
isIE: isIE,
ltIE6: ltIE6,
ltIE7: ltIE7,
ltIE8: ltIE8,
ltIE9: ltIE9,
isIE6: isIE6,
isIE7: isIE7,
isIE8: isIE8,
isIE9: isIE9,
isIE10: isIE10,
isMoz: isMoz,
isOpera: isOpera,
isWebkit: isWebkit,
isChrome: isChrome,
isSafari: isSafari,
ltSafari4: ltSafari4,
ltSafari5: ltSafari5,
isSafari4: isSafari4,
isSafari5: isSafari5,
isSafari6: isSafari6,
isMobileIE: isMobileIE,
isMobileWebkit: isMobileWebkit,
isMobileChrome: isMobileChrome,
isMobileSafari: isMobileSafari,
isAndroid: isAndroid,
ltAndroid21: ltAndroid21,
ltAndroid22: ltAndroid22,
ltAndroid23: ltAndroid23,
ltAndroid3: ltAndroid3,
isAndroid21: isAndroid21,
isAndroid22: isAndroid22,
isAndroid23: isAndroid23,
isAndroid3: isAndroid3,
isAndroid4: isAndroid4,
// for Debug
toString: function () {
var str = ['[Support'],
p,
v;
for (p in this) {
v = this[p];
if (v === !!v) {
str.push(p + ': ' + this[p]);
}
}
return str.join('\n\t') + '\n]';
}
};
}(window));
var Support=function(e){var t=e.document,n=t.documentElement,r=function(e){return e===void 0},i=r(e.addEventListener);return availablePosStyle=!r(n.style.posTop),isTouchable=!r(e.ontouchstart)||!!e.navigator.msPointerEnabled,isIE=!!t.uniqueID,ltIE6=i&&r(n.style.maxHeight),ltIE7=i&&r(t.querySelectorAll),ltIE8=i&&r(t.getElementsByClassName),ltIE9=isIE&&r(e.Worker),isIE6=isIE&&ltIE6,isIE7=isIE&&ltIE7&&!ltIE6,isIE8=isIE&&ltIE8&&!ltIE7,isIE9=isIE&&ltIE9&&!ltIE8,isIE10=isIE&&!ltIE9,isMoz=!!e.sidebar,isOpera=!!e.opera,isWebkit=!t.uniqueID&&!isOpera&&!isMoz&&!!e.localStorage,isChrome=isWebkit&&!r(t.webkitHidden),isSafari=isWebkit&&!isChrome&&!isTouchable,ltSafari4=isSafari&&r(e.matchMedia),ltSafari5=isSafari&&r(e.FileReader),isSafari4=isSafari&&ltSafari4,isSafari5=isSafari&&ltSafari5&&!ltSafari4,isSafari6=isSafari&&!ltSafari5,isMobileIE=isTouchable&&isIE10,isMobileWebkit=isTouchable&&isWebkit,isMobileChrome=isMobileWebkit&&isChrome,isAndroid=isMobileWebkit&&r(e.EventSource),ltAndroid21=isAndroid&&r(e.onhashchange),ltAndroid22=isAndroid&&r(e.Blob),ltAndroid23=isAndroid&&r(e.FileReader),ltAndroid3=isAndroid&&r(e.ArrayBuffer),isAndroid21=isAndroid&&ltAndroid21,isAndroid22=isAndroid&&ltAndroid22&&!ltAndroid21,isAndroid23=isAndroid&&ltAndroid23&&!ltAndroid22,isAndroid3=isAndroid&&ltAndroid3&&!ltAndroid23,isAndroid4=isAndroid&&!ltAndroid3,isMobileSafari=isMobileWebkit&&!isAndroid&&!isMobileChrome,{touch:isTouchable,isIE:isIE,ltIE6:ltIE6,ltIE7:ltIE7,ltIE8:ltIE8,ltIE9:ltIE9,isIE6:isIE6,isIE7:isIE7,isIE8:isIE8,isIE9:isIE9,isIE10:isIE10,isMoz:isMoz,isOpera:isOpera,isWebkit:isWebkit,isChrome:isChrome,isSafari:isSafari,ltSafari4:ltSafari4,ltSafari5:ltSafari5,isSafari4:isSafari4,isSafari5:isSafari5,isSafari6:isSafari6,isMobileIE:isMobileIE,isMobileWebkit:isMobileWebkit,isMobileChrome:isMobileChrome,isMobileSafari:isMobileSafari,isAndroid:isAndroid,ltAndroid21:ltAndroid21,ltAndroid22:ltAndroid22,ltAndroid23:ltAndroid23,ltAndroid3:ltAndroid3,isAndroid21:isAndroid21,isAndroid22:isAndroid22,isAndroid23:isAndroid23,isAndroid3:isAndroid3,isAndroid4:isAndroid4,toString:function(){var e=["[Support"],t,n;for(t in this)n=this[t],n===!!n&&e.push(t+": "+this[t]);return e.join("\n ")+"\n]"}}}(window);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment