老师,我显示的浏览器信息与视频有点不一样

老师,我显示的浏览器信息与视频有点不一样

JS代码如下:

let userAgent = navigator.userAgent;
alert(userAgent);

在谷歌浏览器上的显示:

http://img1.sycdn.imooc.com//climg/5d84bf2e08ec394b04490157.jpg


火狐浏览器的显示:

http://img1.sycdn.imooc.com//climg/5d84bf47082d4cc304780147.jpg


Opera浏览器的显示:

http://img1.sycdn.imooc.com//climg/5d84bf6708f4f19704900166.jpg


Edge浏览器的显示:

http://img1.sycdn.imooc.com//climg/5d84bf7e0860ec9c04510209.jpg


IE11的显示:

http://img1.sycdn.imooc.com//climg/5d84bf8f08e04ea304330175.jpg


比较上面5款浏览器的显示信息,发现它们含有以下子字符串:

Chrome: Mozilla, AppleWebkit, Gecko, Chrome, Safari

Firefox: Mozzila, Gecko, Firefox

Opera: Mozilla, AppleWebkit, Gecko, Chrome, Safari, OPR

Edge: Mozilla, AppleWebkit, Gecko, Chrome, Safari, Edge

IE: Mozilla, WOW64, Trident, Gecko


【发现问题】

Chrome含有的字符串,其它浏览器也有,因此不能检测出来。

Firefox有独特的字符串"Firefox",可以检测。

Opera有独特的字符串"OPR",可以检测。

Edge有独特的字符串"Edge",可以检测。

IE有独特的字符串"Trident",可以检测。


那这时应该如何做到,识别用户使用的浏览器类型(内核)呢?

正在回答

登陆购买课程后可参与讨论,去登陆

6回答

同学你好!
1.let在ie8时候是不兼容的,可以看一下:

http://img1.sycdn.imooc.com//climg/5d89ea2009a54f3605000422.jpg

2.这边使用edge测试,显示也是ie浏览器。可能它是ie浏览器高版本的缘故:

http://img1.sycdn.imooc.com//climg/5d89e9f60960bab904400297.jpg

在5-4的练习中,提示如下:

http://img1.sycdn.imooc.com//climg/5d89ea2a0931b39e04890151.jpg

所以使用ie8测试即可。同学可以不用纠这个问题,关于浏览器内核问题以后用到的时候会很少,而且使用IE浏览器的情况也很少,记住几个关键的即可。

如果帮助到了你,欢迎采纳,祝学习愉快~

  • 老师用Edge测试也显示“IE browser”这么奇怪吗?我这边显示是正确的。回复中只能发文字,我随后再单发个视频或gif图。
    2019-09-24 18:30:01
提问者 我学习太差被关起来了 2019-09-24 18:48:24

测试代码没变,依旧如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

   <head>
      <title>5-1-navigator</title>
      <meta charset="UTF-8">
      <meta name="renderer" content="webkit">
      <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
      <script type="text/javascript">
         window.onload = function ()
            {
                function showBrowser()
                {
                    var str = navigator.userAgent.toLowerCase();
                    if (str.indexOf("trident") > -1 || str.indexOf("msie") > -1)
                    {
                        return "IE browser";
                    }
                    else if (str.indexOf("edge") > -1)
                    {
                        return "Edge browser";
                    }
                    else if (str.indexOf("opera") > -1 || str.indexOf("opr") > -1)
                    {
                        return "Opera browser";
                    }
                    else if (str.indexOf("firefox") > -1 && str.indexOf("mozilla") > -1)
                    {
                        return "Firefox browser";
                    }
                    else if (str.indexOf("chrome") > -1)
                    {
                        return "Chrome browser";
                    }
                }

                alert(showBrowser());
            }
      </script>
   </head>

   <body>

   </body>

</html>


第1张gif图是IE浏览器的测试显示,对于IE11、10、9、8、7和5,都测试正确。

http://img1.sycdn.imooc.com//climg/5d89f3b20a29f45618900986.jpg



第2张gif图是Edge浏览器的测试显示,结果也正确。


http://img1.sycdn.imooc.com//climg/5d89f4360a93e31819030986.jpg

  • 同学测试没有问题的话就正确的哦,老师这边测试不同是因为 我这里是使用的是ie浏览器的edge版本,和Microsoft Edge浏览器还是有点区别的~
    2019-09-24 19:04:10
好帮手慕码 2019-09-24 16:43:44

同学你好!

测试是没有问题的,其中ie8会报错:

http://img1.sycdn.imooc.com//climg/5d89d13c094c86bf06270080.jpg

原因是:可能是 不兼容let,改为var就可以了。

另,因为版本问题,不推荐测试edge哦。

如果帮助到了你,欢迎采纳,祝学习愉快~

  • 【1】let是ES6的内容,旧版本的IE不兼容。【2】为什么说“不推荐测试Edge”呢?
    2019-09-24 16:53:15
提问者 我学习太差被关起来了 2019-09-24 15:54:15

判断浏览器类型的代码如下,请老师点评。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

   <head>
      <title>5-1-navigator</title>
      <meta charset="UTF-8">
      <meta name="renderer" content="webkit">
      <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
      <script type="text/javascript">
         window.onload = function ()
            {
                function showBrowser()
                {
                    let str = navigator.userAgent.toLowerCase();
                    if (str.indexOf("trident") > -1 || str.indexOf("msie") > -1)
                    {
                        return "IE browser";
                    }
                    else if (str.indexOf("edge") > -1)
                    {
                        return "Edge browser";
                    }
                    else if (str.indexOf("opera") > -1 || str.indexOf("opr") > -1)
                    {
                        return "Opera browser";
                    }
                    else if (str.indexOf("firefox") > -1 && str.indexOf("mozilla") > -1)
                    {
                        return "Firefox browser";
                    }
                    else if (str.indexOf("chrome") > -1)
                    {
                        return "Chrome browser";
                    }
                }

                alert(showBrowser());
            }
      </script>
   </head>

   <body>

   </body>

</html>


好帮手慕码 2019-09-23 09:50:22

同学你好!

Chrome浏览器根据第一个字符串判断:

http://img1.sycdn.imooc.com//climg/5d8823a4098cb48004800061.jpg

其他的浏览器虽然也有这个,但是会加上自己特殊的标识,比如说Opera。

http://img1.sycdn.imooc.com//climg/5d8824ac0976731d04720106.jpg

同学可以再理解一下。

如果帮助到了你,欢迎采纳,祝学习愉快~

提问者 我学习太差被关起来了 2019-09-20 20:21:21

其它浏览器都有独特字符串,因此可以检测用户使用的浏览器是否Firefox、Opera、Edge和IE。

而Chrome浏览器没有独特字符串,那么就不能检测出用户的浏览器是否Chrome?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师