【问题标题】:How do I redirect my client to a different page according to their browser?如何根据他们的浏览器将我的客户重定向到不同的页面?
【发布时间】:2012-06-03 10:53:32
【问题描述】:

我在网上找到了一些 HTML 代码来帮助我执行此操作,但是当我在 Firefox 或 Internet Explorer 上尝试时它不起作用。我可以帮忙尝试实现这一目标吗?

这是我找到的代码

    <script language="JavaScript" type="text/JavaScript">
    if(navigator.appName == "Mozilla")
    {
     window.location = "ff/index.html"
    }
     if(navigator.appName == "Microsoft Internet Explorer")
    {
     window.location = "ie/index.html"
    }
     if(navigator.appName == "Google Chrome")
    {
     window.location = "ch/index.html"
    }
     if(navigator.appName == "Safari")
    {
     window.location = "sa/index.html"
    }
     if(navigator.appName == "Google Chrome")
    {
     window.location = "ch/index.html"
    }
     window.location == "un/index.html"
    </script>

【问题讨论】:

    标签: javascript html redirect browser


    【解决方案1】:

    尝试在 JavaScript 中确定浏览器总是很棘手且不可靠。在您的情况下,它不起作用,因为 Firefox(至少版本 12.0)中的 navigator.appName 返回... "Netscape"

    在我的电脑上使用navigator.userAgent 更可靠一点,它返回:""Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0""

    更好的是,查看$.browser - 出于某种原因已弃用它,见上文。

    这给我们带来了一个问题:您为什么需要这个?现代 Web 应用程序应该发现浏览器功能,而不是依赖于实际的浏览器。

    PS:你贴的代码真的很啰嗦,这个等价的sn-p呢?

    var redirects = {
        "Mozilla": "ff",
        "Microsoft Internet Explorer": "ie",
        "Google Chrome": "ch",
        "Safari": "sa",
        "Google Chrome": "ch"
    };
    
    window.location = (redirects[navigator.appName] || "un") + "/index.html";
    

    【讨论】:

      【解决方案2】:

      我最喜欢的脚本是这个 - http://www.quirksmode.org/js/detect.html 大多数现代库都内置了浏览器检测(例如 jQuery browser 对象)

      但是强烈建议使用特征检测而不是浏览器检测。看看Modernizr 库作为我所说的一个很好的例子。

      【讨论】:

        【解决方案3】:

        试试这个代码-

        <script language="JavaScript" type="text/JavaScript">
            if(navigator.appCodeName == "Mozilla")
            {
             window.location.href = "ff/index.html"
            }
             if(navigator.appCodeName == "Microsoft Internet Explorer")
            {
             window.location.href = "ie/index.html"
            }
             if(navigator.appCodeName == "Google Chrome")
            {
             window.location.href = "ch/index.html"
            }
             if(navigator.appCodeName == "Safari")
            {
             window.location.href = "sa/index.html"
            }
             if(navigator.appCodeName == "Google Chrome")
            {
             window.location.href = "ch/index.html"
            }
             window.location.href = "un/index.html"
            </script>
        

        【讨论】:

          【解决方案4】:

          因为以上脚本都不能在足够多的情况下工作,包括重定向到“Firefox 37.x”(!!)——最糟糕的是“谷歌浏览器”(非常顽固) —,现在:我发现工作的唯一“老派”*方法:

          http://www.javascripter.net/faq/browsern.htm

          下面:我修改的(快速/脏的/欢迎你清理它)“版本”,因为我们在这里想要的是一个重定向,而不是显示浏览器代码名称等。

          • 注意:作者 KWOWS,关于整个方法的缺陷 - 并发出警告。

          我假设任何阅读本文的人都明白,对象检测/浏览器功能检测现在(2015 年 9 月)被推广为一种更好的方法——除了......这个:

          首先,它也不是 100% 可靠的;而且,最重要的是,人们可能想要一种更简单或更快的方法,特别是当需要修改现有网站(尽可能少)时,而不是必须重新编码几乎所有内容,切换到 CSS 等等,因为.. . 年龄!

          测试使用:http://www.w3schools.com/html/tryit.asp?filename=tryhtml_default

          http://stackoverflow.com 作为测试重定向 URL 似乎不起作用,在那个 W3schools 页面上,谷歌也没有,而个人网站 URL 起作用)

          <!DOCTYPE html><html><head>
          <script language="JavaScript" type="text/JavaScript">
          
          var nVer = navigator.appVersion;
          var nAgt = navigator.userAgent;
          var browserName  = navigator.appName;
          var fullVersion  = ''+parseFloat(navigator.appVersion); 
          var majorVersion = parseInt(navigator.appVersion,10);
          var nameOffset,verOffset,ix;
          
          // In Opera 15+, the true version is after "OPR/" 
          if ((verOffset=nAgt.indexOf("OPR/"))!=-1) {
           browserName = "Opera";
           fullVersion = nAgt.substring(verOffset+4);
          }
          // In older Opera, the true version is after "Opera" or after "Version"
          else if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
           browserName = "Opera";
           fullVersion = nAgt.substring(verOffset+6);
           if ((verOffset=nAgt.indexOf("Version"))!=-1) 
             fullVersion = nAgt.substring(verOffset+8);
          }
          // In MSIE, the true version is after "MSIE" in userAgent
          else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
           browserName = "Microsoft Internet Explorer";
           fullVersion = nAgt.substring(verOffset+5)
          window.location.href = "http://stackoverflow.com"
          }
          // In Chrome, the true version is after "Chrome" 
          else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
           browserName = "Chrome";
           fullVersion = nAgt.substring(verOffset+7)
          window.location.href = "http://www.w3schools.com"
          }
          // In Safari, the true version is after "Safari" or after "Version" 
          else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
           browserName = "Safari";
           fullVersion = nAgt.substring(verOffset+7);
           if ((verOffset=nAgt.indexOf("Version"))!=-1) 
             fullVersion = nAgt.substring(verOffset+8);
          }
          // In Firefox, the true version is after "Firefox" 
          else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
           browserName = "Firefox";
           fullVersion = nAgt.substring(verOffset+8)
          window.location.href = "http://stackoverflow.com"
          }
          // In most other browsers, "name/version" is at the end of userAgent 
          else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < 
                    (verOffset=nAgt.lastIndexOf('/')) ) 
          {
           browserName = nAgt.substring(nameOffset,verOffset);
           fullVersion = nAgt.substring(verOffset+1);
           if (browserName.toLowerCase()==browserName.toUpperCase()) {
            browserName = navigator.appName;
           }
          }
          // trim the fullVersion string at semicolon/space if present
          if ((ix=fullVersion.indexOf(";"))!=-1)
             fullVersion=fullVersion.substring(0,ix);
          if ((ix=fullVersion.indexOf(" "))!=-1)
             fullVersion=fullVersion.substring(0,ix);
          
          majorVersion = parseInt(''+fullVersion,10);
          if (isNaN(majorVersion)) {
           fullVersion  = ''+parseFloat(navigator.appVersion); 
           majorVersion = parseInt(navigator.appVersion,10);
          }
          
          </script></head><body>
          

          【讨论】:

            猜你喜欢
            • 2013-01-23
            • 2012-07-06
            • 2016-10-18
            • 1970-01-01
            • 2017-04-24
            • 1970-01-01
            • 1970-01-01
            • 2019-08-11
            • 1970-01-01
            相关资源
            最近更新 更多