• asarea——AS3 NetUtil浏览器实用类


    原文地址:http://www.asarea.cn/showdiary.jsp?id=178
    欢迎指正,欢迎探讨

    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());
    }
  • 相关阅读:
    oracle使用expdp备份数据库
    用Setuptools构建和分发程序包
    C#5.0-原生异步编程方式
    任务并行库
    线程-线程池1
    多线程-3(同步)
    多线程-2(线程同步)
    线程---1
    高性能-GC3
    高性能-GC2
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/1614642.html
Copyright © 2020-2023  润新知