簡體   English   中英

現代瀏覽器檢測?

[英]Modern browsers detection?

哪些版本的瀏覽器實際上可以命名為現代? 哪里支持 css3 和或多或少的現代功能?

  • 不知道什么時候歌劇變得現代了
  • 如果FF4可以稱為現代
  • Safari 小於 5 有那么糟糕嗎?

謝謝!

function isOldBrowser() {
    var isOld = false;
    var detect = function(){
        var ua= navigator.userAgent, tem, M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*([\d\.]+)/i) || [];
        if(/trident/i.test(M[1])){
            tem=  /\brv[ :]+(\d+(\.\d+)?)/g.exec(ua) || [];
            return 'IE '+(tem[1] || '');
        }
        M = M[2] ? [M[1].toLowerCase(), parseInt(M[2],10)] : [navigator.appName.toLowerCase(), parseInt(navigator.appVersion,10), '-?'];
        if((tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
        return M;
    };
    var browser = detect();

    if (document.all && !document.querySelector) isOld = true; //IE7 or lower
    else if (document.all && document.querySelector && !document.addEventListener) isOld = true; //IE8
    else if (browser[0] == 'firefox' && browser[1] < 4) isOld = true; //FF4+
    else if (browser[0] == 'safari' && browser[1] < 5) isOld = true;  //Safari 5+
    return isOld;
}

瀏覽器嗅探幾乎總是一個壞主意 如果您希望支持舊瀏覽器,請改用Modernizr和功能檢測來提供替代內容。 您也可以參考caniuse來了解哪些瀏覽器支持哪些功能。

這對我有用:

    var isModernBrowser = typeof(Intl) != "undefined";

這樣做的另一件事是,如果您運行的是 Internet Explorer 11,但在 SharePoint 下(即使使用最新的 SharePoint 2016),它將正確返回 false,因為 SharePoint 強制頁面為 document.documentMode == 8。

菲利普沃爾頓對此有很好的閱讀: https : //philipwalton.com/articles/loading-polyfills-only-when-needed/

讓您的代碼對大多數用戶立即運行,但在為所有其他用戶加載 polyfills 之前停止執行的最簡單方法是構建您的站點,以便所有代碼路徑都有一個入口點。

在上面鏈接的網站的情況下,這里是使用的功能:

function browserSupportsAllFeatures() {
  return window.Promise && window.fetch && window.Symbol;
}

就我而言,我正在使用類似的東西:

const isModernBrowser = () => {
  return 'fetch' in window &&
  'Promise' in window &&
  'assign' in Object &&
  'keys' in Object
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM