Jquery代码在不应该返回时返回true

时间:2013-03-17 20:03:13

标签: jquery html css styles stylesheet

我在jquery中有这个代码,根据浏览器添加不同的CSS样式,因为我无法在完全相同的位置获取内容。 这是在用户使用chrome时将链接添加到样式表的代码。

<script type= "text/javascript">
    $.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());
    if ($.browser.chrome) {
        document.write('<link rel="stylesheet" href="css/chrome.css" 
                                         type="text/css" media="screen">'); 
    }
</script>

然而,当我使用chrome时,另一个代码(同一个代码添加到safari样式表的链接)也变为true并且也添加了一个链接。所以我使用chrome时有两个样式表。两个代码都是完全相同的,唯一的区别是“chrome”这个词被改为“safari”。

3 个答案:

答案 0 :(得分:1)

要获得更好,更准确的铬检测,请查看以下网址: https://stackoverflow.com/a/11382806/2177992

除此之外,您可以像这样构建代码:

if ( chrome )
{
    //chrome stuff
}
else if ( safari )
{
    //safari stuff
}

这样两者永远不会同时活动。

答案 1 :(得分:0)

"mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.22 (khtml, like gecko) chrome/25.0.1364.172 safari/537.22"

Chrome useragent字符串中包含safari,因此当您检查字符串中是否包含safari时,Chrome和Safar都会如此。

有关检测浏览器的更好方法,请参阅这些问题

Browser detection in javascript?

Detect version of browser

有趣的相关文章:History of the browser user-agent string

答案 2 :(得分:0)

这是因为navigator.userAgent.toLowerCase()包含safari。我的版本是mozilla/5.0 (windows nt 6.1) applewebkit/537.22 (khtml, like gecko) chrome/25.0.1364.172 safari/537.22

根据http://user-agent-string.info/?Fuas=mozilla%2F5.0+%28windows+nt+6.1%29+applewebkit%2F537.22+%28khtml%2C+like+gecko%29+chrome%2F25.0.1364.172+safari%2F537.22&test=4483&action=analyze,字符串的这一部分称为browser signature