asfman
android developer
posts - 90,  comments - 213,  trackbacks - 0
package {
 import flash.display.Sprite;
 import flash.external.ExternalInterface;
 public class TestSample extends Sprite
 {
  public function TestSample()
  {
           ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript);
           receivedFromJavaScript("callback jscript's method asfman");    
  }
  private function receivedFromJavaScript(value:String):void{
     ExternalInterface.call("asfman", value);
  }
 }
}
as里可以这样调用
ExternalInterface.call("asfman", value);
html里可以这样调用
document.getElementById("TestSample").sendToActionScript("test");
posted on 2009-05-11 23:27 汪杰 阅读(1020) 评论(1)  编辑 收藏 引用 所属分类: as3

FeedBack:
# re: as3与js交互
2009-05-11 23:34 | 汪杰
NetUtil,不在html中嵌入js,而在swf中直接调用简单js语句的相关实用方法。
在ie7、firefox3中测试通过。

注:使用时请确保在ie中用object标签嵌入swf并赋予唯一id属性,而firefox中只需用embed标签嵌入该swf即可

另:getSwfUrl代码未实现,请各位高手给出相关实现建议

NetUtil源码如下:


package cn.asarea.utils
{
/**
*Author: ATHER Shu 2008.9.26
* NetUtil类: 一些直接调用浏览器简单js的实用类
* 功能:
* 1.显示swf所在页面也就是浏览器地址栏地址 getPageUrl
* 2.显示swf所在地址(未实现,求高手指点) getSwfUrl
* 3.直接弹出浏览器提示 explorerAlert
* 4.获取swf所在页面的编码方式 getpageEncoding
* 5.获取浏览器类型 getBrowserType
* 6.直接运行js代码 eval
* http://www.asarea.cn
* ATHER Shu(AS)
*/
import flash.external.ExternalInterface;
import flash.net.URLRequest;
import flash.net.navigateToURL;

public class NetUtil
{
//获取当前页面url
public static function getPageUrl():String
{
//在ie中如果没有用object classid或者没有赋id属性,而直接用embed,该方法会失效!
var pageurl:String = ExternalInterface.call("eval", "window.location.href");
if(pageurl == null)
pageurl = "none";//"not in a page or js called fail";
return pageurl;
}
//获取swf文件所在url
public static function getSwfUrl():String
{
//要用displayobject的loaderinfo而无法全局访问!
return "get it later";
}
//通过js弹出浏览器提示alert
public static function explorerAlert(msg:String):void
{
navigateToURL(new URLRequest("javascript:alert('"+msg+"')"), "_self");
}
//获取swf所在页面编码方式
public static function getpageEncoding():String
{
//IE下用:document.charset
//Firefox下用:document.characterSet
var pageencoding:String = ExternalInterface.call("eval", "document.charset");
if(pageencoding == null)
pageencoding = ExternalInterface.call("eval", "document.characterSet");
//
if(pageencoding == null)
pageencoding = "NONE";//can't get the page encoding
return pageencoding.toUpperCase();
}
//获取浏览器类型
public static function getBrowserType():String
{
//var browsertype:String = ExternalInterface.call("eval", "navigator.appName");
var browsertype:String = ExternalInterface.call("eval", "navigator.userAgent");
return (browsertype ? browsertype:"NONE");
}
//直接运行js语句,eval
public static function eval(code:String):Object
{
var rtn:Object = ExternalInterface.call("eval", code);
return rtn;
}
}
}


使用代码:


import cn.asarea.utils.NetUtil;
btna.addEventListener(MouseEvent.CLICK, onclick);
btnb.addEventListener(MouseEvent.CLICK, onclick);
btnc.addEventListener(MouseEvent.CLICK, onclick);
btnd.addEventListener(MouseEvent.CLICK, onclick);
function onclick(evt:MouseEvent):void
{
if (evt.target == btna)
NetUtil.explorerAlert("欢迎访问www.asarea.cn");
else if (evt.target == btnb)
NetUtil.explorerAlert(NetUtil.getPageUrl());
else if (evt.target == btnc)
NetUtil.explorerAlert(NetUtil.getpageEncoding());
else
NetUtil.explorerAlert(NetUtil.getBrowserType());
}
  回复  更多评论
  
只有注册用户登录后才能发表评论。

<2009年5月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(15)

随笔分类(1)

随笔档案(90)

文章分类(727)

文章档案(712)

相册

收藏夹

http://blog.csdn.net/prodigynonsense

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 457928
  • 排名 - 6

最新随笔

最新评论

阅读排行榜

评论排行榜