我研究过识别浏览器是否为Safari。
在javascript
:window.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
答案 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 ......
if (navigator.userAgent.match(/OS X.*Safari/) && ! navigator.userAgent.match(/Chrome/)) {
document.body.className += 'safari';
}
...然后使用修改您的选择器为Safari ...
.safari #yourdiv {
margin-left: 0;
}
答案 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';