【问题标题】:How to detect Firefox user agent?如何检测 Firefox 用户代理?
【发布时间】:2013-12-11 10:21:26
【问题描述】:

我正在开发一个应用程序,我需要将主要为 Internet Explorer 设计的遗留代码与 Firefox 一起使用。

我遇到的问题是嵌套在表格结构中的 iframe 不会扩展到表格单元格的整个高度。由于 Web 应用程序的大小,已决定创建一个 JavaScript shim 来解决此问题,而不是进行标记更改。仅当浏览器是 Firefox 时,此 shim 才会包含在页面中,因为在我测试过的其他浏览器中不存在此问题。

所以我的问题是:

Using a classic ASP VBScript function how can I identify Firefox browsers, this should include any edge cases?

到目前为止,我有以下检查用户代理的字符串值“Firefox”。有没有这种方法不起作用的情况?

function IsFirefox()

    dim userAgent : userAgent = Request.ServerVariables("HTTP_USER_AGENT")
    dim locationOfFirefox : locationOfFirefox = InStr(1, userAgent, "Firefox", 1)

    IsFirefox = (locationOfFirefox > 0)

end function

【问题讨论】:

  • 好吧,派生的浏览器将无法工作。您确实需要渲染引擎 ID (Gecko),而不是浏览器品牌名称。
  • 不要尝试识别浏览器,而是尝试识别浏览器的功能。即 win 8.1 机器上的 Internet Explorer 11 将给这个用户代理字符串:“Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; MDDRJS; rv:11.0) like Gecko”所以当你寻找“Gecko”时识别 Firefox 你的脚本会失败
  • 您的代码很好,但有风险。如果未来的 Chrome 版本会引入同样的错误/行为怎么办?你真的可以更好地解决这个客户端,找到嵌套 iframe 的解决方法,例如使用普通的<div> 元素并使用简单的jQuery .load().get() 方法加载它们的内容。这些天 <iframes> 内部页面真的不需要了。
  • @ShadowWizard 不幸的是,我正在开发一个遗留系统,该系统在 3589 files 中找到了 10246 iframes,因此目前确实不可能在没有 iframe 的情况下重构代码。
  • this 可能有同样的问题。

标签: browser vbscript asp-classic user-agent


【解决方案1】:

根据 Mozilla 基金会的一份文件,当 Firefox包含字符串 "Firefox/xyz" 并且不包含包含字符串“Seamonkey/xyz”。更多信息:

https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多