为什么此代码没有't提醒浏览器类型

Why this code doesn't alert the browser type?

本文关键字:浏览器 类型 代码 为什么      更新时间:2023-09-26

你能告诉我写这段代码缺少什么吗?

<button onclick="getBrowserName()">You Browser Name?</button>
<script>
    function getBrowserName()
{
    //Uses external interface to reach out to browser and grab browser useragent info.
    var browserAgent:String = ExternalInterface.call("function getBrowser(){return navigator.userAgent;}");
    //Determines brand of browser using a find index. If not found indexOf returns (-1).
    if(browserAgent != null && browserAgent.indexOf("Firefox")>= 0) 
    {
        alert("Firefox");
    }
    else if(browserAgent != null && browserAgent.indexOf("Safari")>= 0)
    {
        alert("Safari");
    }
    else if(browserAgent != null && browserAgent.indexOf("MSIE")>= 0)
    {
        alert("IE");
    }
    else if(browserAgent != null && browserAgent.indexOf("Opera")>= 0)
    {
        alert("Opera");
    }
    else 
    {
        alert("Undefined");
    }
    return 0;
}
</script>

这里有一些错误。

  1. var browserAgent: String:看起来您使用的是actionscript语法,但JS使用动态类型,所以var就是您所需要的。不需要显式定义变量的数据类型,如果您试图在JS中以这种方式进行定义,将会出现语法错误
  2. ExternalInterface.call:这是ActionScript的另一个遗留问题:你不需要这个。事实上,它根本不起作用,因为标准JS中没有ExternalInterface
  3. 您的getBrowser()功能是不必要的。您将browserAgent设置为等于从ExternalInterface调用函数的结果,但您可以直接执行此操作:var browserAgent = window.navigator.userAgent

当我修复这些东西时,效果很好。

下次,我建议您检查浏览器控制台,因为如果什么都没发生,那里出现的错误将帮助您解决问题,十有八九。

演示

如果更换

var browserAgent:String = ExternalInterface.call("function getBrowser(){return navigator.userAgent;}");

这行:

var browserAgent = window.navigator.userAgent;

那么你的剧本对我来说很好。

但是,用于测试发动机的标准并不精确。看看这个:http://www.useragentstring.com/pages/useragentstring.php

有许多浏览器会告诉你Firefox,即使它们是另一个品牌。但它们是基于彼此的,或者它们也使用其他浏览器中内置的特定引擎。

如果我在Chrome浏览器中使用你的脚本,它会显示"Safari"而不是"未定义"。

关于标点符号:我知道在Javascript中只有两个地方可以使用双点:

  • 条件运算符CCD_ 9
  • 对象表示法中的属性值赋值:{ name : value }

您包含:String = ExternalInterface...的代码行让我想起了ActionScript(?(。

我不太确定下面的代码应该做什么。你确定它是正确的吗?

    var browserAgent:String = 
ExternalInterface.call("function getBrowser(){return navigator.userAgent;}");

我希望这个代码看起来像这样:

var browserAgent = navigator.userAgent;

以下是此更改的示例。http://jsbin.com/lukasere/1/edit