【问题标题】:javascript user agent redirect by browser version numberjavascript用户代理通过浏览器版本号重定向
【发布时间】:2011-10-06 20:11:50
【问题描述】:

我们有一个聊天程序,目前只能在几种浏览器上运行。因此,我插入了一个用户代理重定向来管理消息传递,以通知用户为什么他们无法使用不受支持的浏览器聊天。

我遇到的问题只有 Firefox 3.1 及以下版本,例如,FireFox 支持。但我下面的自定义脚本启用所有 Firefox 版本兼容。只兼容 Firefox 3.1 的解决方案是什么?

注意:我不打算将它们发送到我的示例中看到的实际浏览器网站。我只是将这些 URL 放入示例中。我计划在自定义重定向页面上添加友好的消息...

现有代码演示: http://jsfiddle.net/evanmoore/4xr77/

代码如下:

<script type="text/javascript">
    if ((navigator.userAgent.indexOf('Firefox') != -1) || (navigator.userAgent.indexOf('MSIE') != -1)) 
    {
        // Your browser is supported for live chat
        document.location = "http://www.livechatinc.com/";
    }
    else if(navigator.userAgent.indexOf("Safari") != -1)
    {
        // Your Safari browser is not supported for live chat
        window.location = "http://www.apple.com";
    }
    else if(navigator.userAgent.indexOf("Chrome") != -1)
    {
        // Your Chrome browser is not supported for live chat
        window.location = "http://www.google.com/chrome";
    }
    else 
    {   // All others... Your browser is not supported for live chat
        window.location = "http://www.gofetch.com";
    }
</script>

【问题讨论】:

  • 为什么要将使用 Google Chrome 和 Safari 的用户重定向到他们可以下载 Google Chrome 和 Safari 的页面,而这不会改变任何内容? (此外,谷歌浏览器通常与 Firefox 兼容,您应该为跨浏览器聊天编写代码,除非您有充分的理由不...)
  • 此外,Google Chrome 在其用户代理中包含字符串“Safari”,因此您需要将 Chrome 移至 Safari 之上。
  • @minitech 这只是为了解决这个问题。我计划将他们重定向到一个页面,该页面包含通知他们浏览器不兼容的消息。我也不打算将它们发送到 gofetch.com。这只是一个例子……是的,我们的聊天程序现在非常有限。我知道。
  • 检查 Firefox 用户代理字符串 here 并相应地写下您的条件。
  • @Evan:你为什么不借助服务器端代码来处理你的逻辑呢?我不知道你的平台,因为你没有提到它。

标签: javascript browser redirect user-agent


【解决方案1】:

根据 Asad 的评论,我发现了不同的浏览器字符串 here,这使我能够像这样控制版本号...我认为这应该可以解决问题!

if ((navigator.userAgent.indexOf('Firefox/3.1') != -1) 

【讨论】:

  • 浏览器检测是大约从 1995 年开始的一个坏习惯。任何对 Web 开发有丝毫线索的人都会使用特性或能力检测。
  • @RobG 目前,我们的聊天程序极其受限于一个操作系统上的一个浏览器。虽然 webkit 和 mozilla 相当于我们流量的 40%,更不用说其他操作系统甚至无法触摸聊天程序,如 os x,检测的目的是我也可以在这些自定义消息重定向页面上放置指标并向企业展示我们正在失去多少市场,人们展示了不兼容的信息。这是希望我们能得到一个100%兼容的聊天程序。
  • 您可以对功能检测执行完全相同的操作 - 报告有多少不兼容的浏览器访问并且无法使用该应用程序。您的服务器应该能够清除网络爬虫、机器人、蜘蛛等。
  • @RobG - 谢谢罗布!我将与管理服务器的网络管理员团队分享。
【解决方案2】:

尝试检查功能是否存在,而不是浏览器的版本。
例如if (typeof foo != 'undefined') 将检查 foo 是否存在
你可以找到更多信息here

【讨论】:

    猜你喜欢
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2016-02-06
    相关资源
    最近更新 更多