你能告诉我在写这段代码时我缺少什么吗?
<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>
答案 0 :(得分:2)
嗯,这里有一些问题。
var browserAgent: String
:您似乎正在使用actionscript语法,但JS使用动态类型,因此您只需要var
。没有必要明确定义变量的数据类型,如果你尝试在JS中这样做,它会给你语法错误。ExternalInterface.call
:这是ActionScript的另一个结转:你不需要这个。事实上,它根本不起作用,因为标准JS中没有ExternalInterface
类。getBrowser()
功能是不必要的。您设置的browserAgent
等于ExternalInterface
调用函数的结果,但您可以直接执行此操作:var browserAgent = window.navigator.userAgent
。当我修理这些东西时,它运作良好。
下次我建议检查浏览器控制台,因为如果没有发生任何事情,那里出现的错误将帮助您解决十分之九的问题。
答案 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