如何使用Javascript检测浏览器是否为Safari 5+?

时间:2011-11-29 23:41:35

标签: javascript safari

我需要一种方法来检测浏览器是Safari 5或更高版本 - 但是javascript不应该依赖于useragent,因为它可以被覆盖!有什么想法吗?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

  1. 如果不接受最终用户和/或浏览器本身可以修改用户代理,则无法可靠地检测浏览器。

  2. 作为第1点的结果,几乎始终最好使用功能支持检测(例如使用Modernizr)。

  3. 因为 次需要专门检测浏览器,例如禁用或启用误报/不可检测的特定功能,例如Safari 5中的文件拖放

  4. 作为示例,以下代码提供了一个函数isFileDragAndDropSupported(),该函数使用isSafari5()函数返回Safari 5支持文件拖放,即使window.FileReader不是在Safari 5中定义。

    function isSafari5() {
        return !!navigator.userAgent.match(' Safari/') && !navigator.userAgent.match(' Chrom') && !!navigator.userAgent.match(' Version/5.');
    };
    
    function isFileAPIEnabled () {
        return !!window.FileReader;
    };
    
    function isFileDragAndDropSupported() {
        var isiOS = !!navigator.userAgent.match('iPhone OS') || !!navigator.userAgent.match('iPad');
        return (Modernizr.draganddrop && !isiOS && (isFileAPIEnabled() || isSafari5()));
    };
    

    注意:仅对isFileDragAndDropSupported()函数需要Modernizr。 isSafari5()函数将独立运行。