为什么此代码不会警告浏览器类型?

时间:2014-06-25 02:00:48

标签: javascript html html5 browser onclick

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

<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>

3 个答案:

答案 0 :(得分:2)

嗯,这里有一些问题。

  1. var browserAgent: String:您似乎正在使用语法,但JS使用动态类型,因此您只需要var。没有必要明确定义变量的数据类型,如果你尝试在JS中这样做,它会给你语法错误。
  2. ExternalInterface.call:这是ActionScript的另一个结转:你不需要这个。事实上,它根本不起作用,因为标准JS中没有ExternalInterface类。
  3. 您的getBrowser()功能是不必要的。您设置的browserAgent等于ExternalInterface调用函数的结果,但您可以直接执行此操作:var browserAgent = window.navigator.userAgent
  4. 当我修理这些东西时,它运作良好。

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

    Demo

答案 1 :(得分:2)

如果替换此行

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

这一行:

var browserAgent = window.navigator.userAgent;

然后你的脚本就可以了。

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

有很多浏览器会告诉你Firefox,即使他们是另一个品牌。但它们是相互依赖的,或者它们也使用在其他浏览器中构建的特定引擎。

如果我将您的脚本与Chrome浏览器一起使用,则表示&#34; Safari&#34;而不是&#34; undefined&#34;。

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

  • 条件运算符a = b ? c : d;
  • 对象表示法中的属性 - 值分配:{ name : value }

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

答案 2 :(得分:0)

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

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

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

var browserAgent = navigator.userAgent;

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