The example below shows how to retrieve JavaScript Browser info from ActionScript.
ActionScript (browser_info.swf)
import com.macromedia.javascript.*; var proxy:JavaScriptProxy = new JavaScriptProxy(_root.lcId, this); function getBrowserInfo():Void { proxy.call("getBrowserInfo"); } function getBrowserInfoReturn(browser:Object):Void { //can get more info from System.capabilities for(var x:String in browser) { trace(x + " : " + browser[x]); } } getBrowserInfo();
HTML / JavaScript Page
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>browser_info</title>
<script type="text/javascript" src="javascript/Exception.js"></script>
<script type="text/javascript" src="javascript/FlashProxy.js"></script>
<script type="text/javascript" src="javascript/FlashSerializer.js"></script>
<script type="text/javascript" src="javascript/FlashTag.js"></script>
</head>
<body bgcolor="#ffffff">
<script type="text/javascript">
function getBrowserInfo()
{
var o = {};
var type;
for(var x in navigator)
{
type = typeof(navigator[x]);
switch (type)
{
case 'function':
{
//if it is a function, call it and keep its result
//o[x] = navigator[x]();
break;
}
case 'object':
{
//one or more of the objects is causing a recursion error,
//so right now, we just skip them
continue;
break;
}
default:
{
//copy the property
o[x] = navigator[x];
}
}
var docElement = document.documentElement;
o.href = location.href;
o.pathName = location.pathname;
o.baseURI = document.doctype.baseURI;
o.lang = docElement.lang;
o.offsetTop = docElement.offsetTop;
o.offsetLeft = docElement.offsetLeft;
o.offsetWidth = docElement.offsetWidth;
o.offsetHeight = docElement.offsetHeight;
o.scrollTop = docElement.scrollTop;
o.scrollLeft = docElement.scrollLeft;
o.scrollHeight = docElement.scrollHeight;
o.scrollWidth - docElement.scrollWidth;
o.clientHeight = docElement.clientHeight;
o.clientWidth = docElement.clientWidth;
o.width = document.width;
o.height = document.height;
o.domain = document.domain;
o.lastModified = document.lastModified;
var pluginArray = [];
var plugins = navigator.plugins;
var pluginLen = plugins.length;
for(var i = 0; i < pluginLen; i++)
{
pluginArray.push(plugins[i].name);
}
o.plugins = pluginArray;
}
flashProxy.call("getBrowserInfoReturn", o);
}
</script>
<script type="text/javascript">
var uid = new Date().getTime();
var flashProxy = new FlashProxy(uid, 'myFlashContent', 'JavaScriptFlashGateway.swf');
var tag = new FlashTag('browser_info.swf', 550, 400, '7,0,14,0'); // last two arguments are height and width
tag.addFlashVar('lcId', uid);
tag.setId('myFlashContent');
tag.write(document);
</script>
</body>
</html>
Discussion