2010-11-01 46 views
-1

确定用户是否实际使用Safari的最佳方式是什么?什么是确定用户是否实际使用Safari的最佳方式?

+4

出于好奇,为什么要特意检测Safari? – Andy 2010-11-01 16:18:00

+6

在大多数情况下,您不想检测浏览器,只需浏览器功能。你做什么需要你发送Safari的东西,因为它是Safari? – Sorpigal 2010-11-01 16:20:34

+0

你们关于什么? =) – Cover 2010-11-02 01:54:49

回答

4

您可能需要阅读http://www.quirksmode.org/js/detect.html然后http://www.quirksmode.org/js/support.html和理解,你能做的最好的是探测用户会告诉你什么是他们使用的浏览器(这将是User_Agent类)。你绝不能100%肯定地说他们使用的是给定的浏览器,因为你必须依赖于浏览器传输的内容,并且可以在很多地方覆盖它。

但是,quirksmode.org解决方案通常是处理跨所有引擎和浏览器的单一检查的最佳方法。

您是否使用特定的JavaScript框架,可以让您更准确地确定它们正在使用的内容?你使用什么服务器端语言? (以及其他人问,为什么只有Safari?)

+0

太多的问题与我的问题无关。这只是你的好奇心......大声笑! – Cover 2010-11-02 01:59:35

+0

@cover〜尽管如此,它们仍然是有效的问题。请接受答案或关闭问题。成为一名优秀的社区成员。 – jcolebrand 2010-11-05 14:23:39

1

其他人已经注意到,浏览器嗅探并不理想,但有些情况下只发生在浏览器中的错误,并且很难检测到。在这种情况下,你可以做浏览器嗅探,并希望用户代理字符串是有效的。这是Ext-JS所做的。

var ua = navigator.userAgent.toLowerCase(); 
var isChrome = /\bchrome\b/.test(ua); 
var isSafari = !isChrome && /safari/.test(ua); 

线62查看源代码的:HTTP://dev.sencha.com/deploy/dev/docs/source/Ext.html拥有所有分机的浏览器检测在一个易于阅读的格式。

这是脆弱的,并可能无法正常工作,因为新版本和浏览器出来。

告诉我们为什么要测试safari,所以我们可以确保没有更好的方法来实现你想要的。

+0

这是我的替代首选方法。又,这是我宁愿依赖的。 – jcolebrand 2010-11-01 20:10:37

1
if(navigator.userAgent.toLowerCase().indexOf("safari") != -1 && navigator.userAgent.toLowerCase().indexOf("chrome") == -1){ 
    // you code here 
} 
相关问题