AS3 NetUtil浏览器实用类
sshong 发表于2008年9月26日 09:50:00 更新于2008年9月26日 21:02:00
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.me
    * 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.me");
    else if (evt.target == btnb)
        NetUtil.explorerAlert(NetUtil.getPageUrl());
    else if (evt.target == btnc)
        NetUtil.explorerAlert(NetUtil.getpageEncoding());
    else
        NetUtil.explorerAlert(NetUtil.getBrowserType());
}

演示:
标签:as3NetUtil浏览器分类:As3&Flex阅读:7119
评论
秋色烽火2009年1月21日 21:38
swfurl?? 不是直接用_url属性吗?
sshong2008年12月24日 14:56 回复
呵呵,谢谢来访
shavy2008年12月24日 10:51
虽然暂时用不上,不过收了,谢谢
shavy2008年12月24日 10:51
虽然暂时用不上,不过收了,谢谢
sshong2008年11月25日 18:23 回复
呵呵,谢谢来访。
wolfone2008年11月25日 17:26
拜读完毕 不错的实例  写错字
wolfone2008年11月25日 17:26
拜读完毕 不错的实例  写错字
scuqsgj2008年11月1日 02:31
http://panoxyl-848.zostura.cn http://drug-7-749.zipace.cn http://drug-39-745.zipace.cn http://solution-19.zyreloj.cn http://melaleuca.zostura.cn http://zaditen-299.zyreloj.cn http://toradol-483.zuvexry.cn http://alcohol-1.zenavo.cn http://health-84.zipace.cn http://plan-b-63.zuvexry.cn http://pharmacy-12.zostura.cn http://marijuana-5-723.zostura.cn http://health-85-89.zipace.cn http://virility-pills-527.zyreloj.cn http://donepezil-224.zenavo.cn http://treadmill-1-382.zyreloj.cn http://speed-8.zyreloj.cn 
http://plan-b-31.zuvexry.cn 
sshong2008年10月29日 22:10
ip为64.86.25.92 美国 加洲,老是在该帖底下发垃圾回复,怒了,已经封闭该ip
ziv.yuan2008年10月9日 11:22
"另:getSwfUrl代码未实现,请各位高手给出相关实现建议"

这个搞复杂点可以通过JS实现, 免去了使用 loaderInfo 要初始化的麻烦.
反正你现在可以直接运行JS了
添加评论
您的大名,限长10汉字,20英文(*)
电子信箱(*)
您的网站
正文,限长500汉字,1000英文(*)
验证码(*) 单击刷新验证码
联系我
博客订阅