【问题标题】:What is best way to determine if the user is actually using Safari?确定用户是否实际使用 Safari 的最佳方法是什么?
【发布时间】:2011-03-10 12:27:57
【问题描述】:

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

【问题讨论】:

  • 出于好奇,为什么要专门检测 Safari?
  • 在大多数情况下,您不想检测浏览器,只想检测浏览器功能。你在做什么要求你向 Safari 发送一些东西,只是因为它是 Safari?
  • 你们在担心什么? =)
  • 你有没有成功解决过这个问题?您还需要这方面的帮助吗?

标签: javascript cross-browser


【解决方案1】:

您可能想阅读http://www.quirksmode.org/js/detect.html,然后阅读http://www.quirksmode.org/js/support.html,并了解您能做的最好的事情就是探测用户告诉您的是他们正在使用的浏览器(这将是User_Agent)。您永远不能 100% 确定他们正在使用给定的浏览器,因为您必须依赖从浏览器传输的内容,而且它可以在很多时候被覆盖。

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

您是否使用了特定的 javascript 框架,可以让您更准确地确定他们正在使用什么?您使用的是什么服务器端语言? (正如其他人问的那样,为什么只有 Safari?)

【讨论】:

  • 太多的问题与我的问题无关。这只是你的好奇心......哈哈!
  • @cover ~ 尽管如此,它们仍然是有效的问题。请接受答案或关闭问题。成为一名优秀的社区成员。
【解决方案2】:
【解决方案3】:

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

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

view-source:http://dev.sencha.com/deploy/dev/docs/source/Ext.html 的第 62 行以易于阅读的格式包含 Ext 的所有浏览器检测。

这很脆弱,随着新版本和浏览器的出现可能无法正常工作。

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

【讨论】:

  • 这是我的替代首选方法。也就是我更愿意依赖的。
【解决方案4】:
if(navigator.userAgent.toLowerCase().indexOf("safari") != -1 && navigator.userAgent.toLowerCase().indexOf("chrome") == -1){
    // you code here
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-14
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多