我需要通过AS3内部的flex mxml应用程序检测,这是我在的浏览器 - FF,Chrome,IE等,只有名称和版本。怎么做这个?
答案 0 :(得分:7)
是的,你将使用javascript,但实际上你并不需要在页面中放置javascript。
这是一个快速的脚本示例,可以从您的Flex应用程序获取该信息,而无需向包含的html页面添加任何内容:
<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function creationCompleteHandler(event:FlexEvent):void
{
var appName : String = String(ExternalInterface.call("function(){return navigator.appName}"));
var appVersion : String = String(ExternalInterface.call("function(){return navigator.appVersion}"));
var userAgent : String = String(ExternalInterface.call("function(){return navigator.userAgent}"));
trace( appName ) ;
trace( appVersion );
trace( userAgent );
}
]]>
</fx:Script>
这会将信息跟踪到控制台,例如,当我运行它时,我得到:
Microsoft Internet Explorer
4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)
如果您有任何问题,请与我们联系!
答案 1 :(得分:1)
如果在Flash库中使用一些客户端JavaScript和ExternalInterface类,这并不棘手。
以下是执行此操作的简要教程:http://codingrecipes.com/calling-a-javascript-function-from-actionscript-3-flash
您的JS需要运行浏览器客户端检查。
答案 2 :(得分:0)
根据我的研究navigator.appName
将为以下浏览器返回字符串Netscape
:IE11,Firefox,Chrome和Safari。检查this.
如果要检测浏览器名称,请尝试以下操作:
var browserName:String;
var userAgent:Object = ExternalInterface.call("window.navigator.userAgent.toString");
if(userAgent.toLowerCase().indexOf("chrome") !== -1)
{
browserName = "Chrome";
}
if(userAgent.toLowerCase().indexOf("mozilla") !== -1)
{
browserName = "Mozilla";
}
if(userAgent.toLowerCase().indexOf("safari") !== -1)
{
browserName = "Safari";
}