【问题标题】:Feature detection for jquery 1.4jquery 1.4 的特征检测
【发布时间】:2011-01-15 02:09:19
【问题描述】:

我将如何使用功能检测来检测浏览器是否是 firefox,即(但不是 ie6)、opera、chrome 或 safari?

【问题讨论】:

  • 您要确定什么? “特征检测”是用来说,如果它会支持这个,做那个,如果不是,回退......关键是不在乎哪个浏览器。鉴于此,您确定浏览器的用途是什么?
  • 谢谢,那我可能会走错路。但有人告诉我,如果有人不使用上述网站之一,请在网站上发出警告。我认为 JS 可能是这样做的一种方式,但随着 $.browser 被弃用,我认为特征检测可能会解决这个问题。
  • 如果您的要求表明您必须包含“旧浏览器”通知,那么您应该使用$.browser 或服务器端代码检查用户代理。特征检测不是检测浏览器的可靠方法。
  • 很酷,感谢您的帮助,我目前有 $.browser 进行检测,但认为这是不好的做法(并且可能是),但我找不到任何其他方法。跨度>

标签: jquery browser-feature-detection jquery-1.4


【解决方案1】:

功能检测不应该告诉您用户正在使用哪个浏览器。它旨在告诉您浏览器是否可以处理您需要做的事情。

例如,如果您需要支持 ActiveX,您可以检查

if(ActiveXObject) { ... }

这比检查浏览器是否为 IE 更好,因为其他一些浏览器(当前或未来)也可能支持 ActiveX。

一个更有用的例子可能是遍历节点列表时的文本节点检查。

if (!el.tagName || el.tagName != expectedTagName)
    el = el.nextSibling;    // skip the text node

【讨论】:

    【解决方案2】:

    对于 Safari:我将使用服务器端路由,即使用 Chris Schuld 的 Browser.php;除了 http 用户代理之外,关于 Safari 功能检测的文档很少。

    【讨论】:

      【解决方案3】:

      我正在寻找答案,想也许有人已经解决了我的问题。 像许多人一样,我最终写了自己的:

          try {
              if (ActiveXObject != undefined) {
                  alert("we have activex");
          }
          }
          catch (err)
          {
              alert(err.message);
          }
      

      当然,您会想要自定义您的实现。我的示例仅显示基本逻辑。 HTH!

      【讨论】:

        猜你喜欢
        • 2019-10-25
        • 2012-12-16
        • 2017-03-06
        • 2013-03-18
        • 1970-01-01
        • 1970-01-01
        • 2010-11-20
        相关资源
        最近更新 更多