查找当前正在运行的浏览器是否通过css或javascript进行safari

时间:2011-03-14 12:38:27

标签: css safari

我研究过识别浏览器是否为Safari。 在javascriptwindow.devicePixelRatio对象为chrome和safari提供'1' 在CSS

@media screen and (-webkit-min-device-pixel-ratio:0){
    #yourdiv{
        margin-left:0;

    }
} 

适用于chrome和safari。但是我没有为safari浏览器找到css或javascript hack(不适用于任何其他浏览器)。任何人都可以帮助我。

我正在使用safari brower:      navigator.useragent = Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16

4 个答案:

答案 0 :(得分:8)

if (navigator.userAgent.match(/AppleWebKit/) && ! navigator.userAgent.match(/Chrome/)) {
   alert('this is safari brower and only safari brower')
}

答案 1 :(得分:7)

CSS黑客不赞成,但在针对旧版本的IE(一种必要的邪恶)时不那么皱眉。

你可以弄清楚是否像这样使用Safari ......

的JavaScript

if (navigator.userAgent.match(/OS X.*Safari/) && ! navigator.userAgent.match(/Chrome/)) {
   document.body.className += 'safari';
}

...然后使用修改您的选择器为Safari ...

CSS

.safari #yourdiv {
    margin-left: 0;
}

jsFiddle

答案 2 :(得分:2)

有一个javascript函数可以帮助识别大多数浏览器here

它值得更新,因为它会定期更新。

作为解释,从链接页面复制以下内容:


浏览器检测

dataBrowser数组中包含的对象包含有助于脚本检测用户浏览器的属性。请注意其一般语法:

dataBrowser: [
    {
        prop: window.opera,
        identity: "Opera",
        versionSearch: "Version" // note: no comma
    },
    {
        string: navigator.userAgent,
        subString: "MSIE",
        identity: "Explorer",
        versionSearch: "MSIE" // note: no comma
    } // note: no comma
];

[]定义数组文字,其所有元素都是对象文字。每个对象文字都用大括号{}括起来,并包含一些属性(name:value,)。请注意,对象之间和属性之间需要逗号,但始终禁止使用最后一个逗号。

属性

dataBrowser数组中的每个对象都可以包含以下属性:

string和subString属性。这些说:“在字符串中搜索subString”。如果找到subString,则标识浏览器。 道具财产。它说“看看是否支持道具”。如果是,则识别浏览器。 身份字符串。此字符串将成为BrowserDetect.browser的值。 一个versionSearch字符串。这是为了搜索版本号(见下文)。如果此属性不存在,则使用标识字符串。 每个对象必须包含1或2(从不两者!),必须包含3并且可以包含4。

答案 3 :(得分:0)

我知道这个问题有点陈旧,但所提供的所有答案都会检测桌面和移动Safari。要仅检测其中一个,您可以使用:

var inDesktopSafari = (navigator.userAgent.toLowerCase().indexOf('safari') !== -1 && navigator.userAgent.toLowerCase().indexOf('chrome') === -1) && typeof window.ontouchstart === 'undefined';

var inMobileSafari = (navigator.userAgent.toLowerCase().indexOf('safari') !== -1 && navigator.userAgent.toLowerCase().indexOf('chrome') === -1) && typeof window.ontouchstart !== 'undefined';