·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]AS3获取浏览器信息及URL参数的实例(2)

时间:2014-12-18 16:30未知
以下是WebUtils.as类(类包文件夹结构:com\VvxT\WebUtils.as): packagecom.VvxT { importflash.net.*; importflash.utils.ByteArray; importflash.external.ExternalInterface; /** *统一资源定位符(UniformReso

以下是WebUtils.as类(类包文件夹结构:com\VvxT\WebUtils.as):

  1. package com.VvxT 
  2. { 
  3.     import flash.net.*; 
  4.     import flash.utils.ByteArray; 
  5.     import flash.external.ExternalInterface; 
  6.   
  7.     /** 
  8.      * 统一资源定位符 (Uniform Resource Locator, URL) 完整的URL由这几个部分构成: 
  9.      * scheme://host:port/path?query#fragment 
  10.      * PS:所有获取失败时返回null或"" 
  11.      */ 
  12.     public class WebUtils 
  13.     { 
  14.         private static var regWebkit:RegExp = new RegExp("(webkit)[ \\/]([\\w.]+)","i"); 
  15.         /** 
  16.          * 整个URl字符串 EX.:返回值:http://www.test.com:80/view.html?id=123#start 
  17.          */ 
  18.         public static function get Url():String 
  19.         { 
  20.             return getUrlParams("url"); 
  21.         } 
  22.         /** 
  23.          * 整个URl字符串 EX.:返回值:http://www.test.com:80/view.html?id=123#start 
  24.          */ 
  25.         public static function get Href():String 
  26.         { 
  27.             return getUrlParams("href"); 
  28.         } 
  29.   
  30.         /** 
  31.          * 获取URL中的锚点(信息片断) EX.:返回值:#start 
  32.          */ 
  33.         public static function get Hash():String 
  34.         { 
  35.             return getUrlParams("hash"); 
  36.         } 
  37.   
  38.         /** 
  39.          * URL 的端口部分。如果采用默认的80端口(PS:即使手动添加了:80),那么返回值并不是默认的80而是空字符。 
  40.          */ 
  41.         public static function get Port():String 
  42.         { 
  43.             return (getUrlParams("port") ? getUrlParams("port") : "80"); 
  44.         } 
  45.   
  46.         /** 
  47.          * URL 的路径部分(就是文件地址) EX.:返回值:/view.html 
  48.          */ 
  49.         public static function get PathAndName():String 
  50.         { 
  51.             return getUrlParams("PathAndName"); 
  52.         } 
  53.         /** 
  54.          * URL 的路径部分(就是文件地址) EX.:返回值:/view.html 
  55.          */ 
  56.         public static function get Pathname():String 
  57.         { 
  58.             return getUrlParams("pathname"); 
  59.         } 
  60.   
  61.         /** 
  62.          * 查询(参数)部分。除了给动态语言赋值以外的参数 EX.:返回值:?id=123 
  63.          */ 
  64.         public static function get Search():String 
  65.         { 
  66.             return getUrlParams("search"); 
  67.         } 
  68.         /** 
  69.          * 查询(参数)部分。除了给动态语言赋值以外的参数 EX.:返回值:?id=123 
  70.          */ 
  71.         public static function get QueryString():String 
  72.         { 
  73.             return getUrlParams("query"); 
  74.         } 
  75.   
  76.         /** 
  77.          * URL 的协议部分 EX.:返回值:http:、https:、ftp:、maito:等 
  78.          */ 
  79.         public static function get Protocol():String 
  80.         { 
  81.             return getUrlParams("protocol"); 
  82.         } 
  83.   
  84.         /** 
  85.          * URL 的主机部分,EX.:返回值:www.test.com 
  86.          */ 
  87.         public static function get Host():String 
  88.         { 
  89.             return getUrlParams("host"); 
  90.         } 
  91.   
  92.         public static function Request(param:String):String 
  93.         { 
  94.             var returnValue:String; 
  95.             try 
  96.             { 
  97.                 var query:String = QueryString.substr(1); 
  98.                 var urlv:URLVariables=new URLVariables(); 
  99.                 urlv.decode(query); 
  100.                 returnValue = urlv[param]; 
  101.             } 
  102.             catch (error:Object) 
  103.             { 
  104.             } 
  105.             if (returnValue == null) 
  106.             { 
  107.                 returnValue = ""; 
  108.             } 
  109.             return returnValue; 
  110.         } 
  111.   
  112.         private static function getUrlParams(param:String):String 
  113.         { 
  114.             var returnValue:String; 
  115.             switch (param) 
  116.             { 
  117.                 case "PathAndName" : 
  118.                     returnValue = ExternalInterface.call("function getUrlParams(){return window.location.pathname;}"); 
  119.                     break; 
  120.                 case "query" : 
  121.                     returnValue = ExternalInterface.call("function getUrlParams(){return window.location.search;}"); 
  122.                     break; 
  123.                 case "url" : 
  124.                     returnValue = ExternalInterface.call("function getUrlParams(){return window.location.href;}"); 
  125.                     break; 
  126.                 default : 
  127.                     returnValue = ExternalInterface.call("function getUrlParams(){return window.location." + param + ";}"); 
  128.                     break; 
  129.             } 
  130.   
  131.             return (returnValue ? UrlDecode(returnValue):""); 
  132.         } 
  133.   
  134.         /** 
  135.          * 获取浏览器信息 
  136.          */ 
  137.         public static function get BrowserAgent():String 
  138.         { 
  139.             var returnValue:String = ExternalInterface.call("function BrowserAgent(){return navigator.userAgent;}"); 
  140.             return (returnValue ? returnValue:""); 
  141.         } 
  142.   
  143.         /** 
  144.          * 是否IE浏览器 
  145.          */ 
  146.         public static function get IsIE():Boolean 
  147.         { 
  148.             return (BrowserMatch().browser.toLowerCase() == "msie"); 
  149.         } 
  150.   
  151.         /** 
  152.          * 是否FireFox浏览器 
  153.          */ 
  154.         public static function get IsMozilla():Boolean 
  155.         { 
  156.             return (BrowserMatch().browser.toLowerCase() == "mozilla"); 
  157.         } 
  158.   
  159.         /** 
  160.          * 是否Safari浏览器 
  161.          */ 
  162.         public static function get IsSafari():Boolean 
  163.         { 
  164.             return regWebkit.test(BrowserAgent); 
  165.         } 
  166.   
  167.         /** 
  168.          * 是否Opera浏览器 
  169.          */ 
  170.         public static function get IsOpera():Boolean 
  171.         { 
  172.             return (BrowserMatch().browser.toLowerCase() == "opera"); 
  173.         } 
  174.   
  175.         /** 
  176.          * 获取浏览器类型及对应的版本信息 EX.:BrowserMatch().browser  BrowserMatch().version 
  177.          */ 
  178.         public static function BrowserMatch():Object 
  179.         { 
  180.             var ua:String = BrowserAgent; 
  181.             var ropera:RegExp = new RegExp("(opera)(?:.*version)?[ \\/]([\\w.]+)","i"); 
  182.             var rmsie:RegExp = new RegExp("(msie) ([\\w.]+)","i"); 
  183.             var rmozilla:RegExp = new RegExp("(mozilla)(?:.*? rv:([\\w.]+))?","i"); 
  184.   
  185.             var match:Object = regWebkit.exec(ua) || ropera.exec(ua) || rmsie.exec(ua) || ua.indexOf("compatible") < 0 && rmozilla.exec(ua) || []; 
  186.   
  187.             return { browser: match[1] || "", version: match[2] || "0" }; 
  188.         } 
  189.   
  190.         /** 
  191.          * 获取页面编码方式,EX.:返回值:GB2312、UTF-8等; 
  192.          */ 
  193.         public static function get PageEncoding():String 
  194.         { 
  195.             var returnValue:String = ExternalInterface.call("function PageEncoding(){return window.document.charset;}");//IE 
  196.             if (returnValue == null) 
  197.             { 
  198.                 returnValue = ExternalInterface.call("function PageEncoding(){return window.document.characterSet;}"); 
  199.             }//FF 
  200.             //获取成功 
  201.             if (returnValue != null) 
  202.             { 
  203.                 returnValuereturnValue = returnValue.toUpperCase(); 
  204.             } 
  205.             return (returnValue ? returnValue:""); 
  206.         } 
  207.   
  208.         /** 
  209.          * 通过js弹出浏览器提示alert,EX.:Alert("Test"); 
  210.          */ 
  211.         public static function Alert(msg:String):void 
  212.         { 
  213.             navigateToURL(new URLRequest("javascript:alert('"+msg+"');"), "_self"); 
  214.         } 
  215.   
  216.         /** 
  217.          * 通过js的open新窗口打开,(PS:多标签浏览器则新建一个标签打开) 
  218.          */ 
  219.         public static function Open(url:String):void 
  220.         { 
  221.             Eval("javascript:window.open('"+url+"','newwindow')"); 
  222.         } 
  223.   
  224.         /** 
  225.         * URL重定向,使用replace函数,(PS:取消浏览器的前进后退,防止刷新回发数据) 
  226.         */ 
  227.         public static function Redirect(url:String):void 
  228.         { 
  229.             Eval("window.location.replace('"+url + "')"); 
  230.         } 
  231.           
  232.         /** 
  233.         * URL重定向,使用内部navigateToURL函数,(PS:简化了不用每次都new URLRequest的操作) 
  234.         */ 
  235.         public static function NavigateToURL(url:String,target:String="_self"):void 
  236.         { 
  237.             navigateToURL(new URLRequest(url), target); 
  238.         } 
  239.   
  240.         /** 
  241.         * 运行js语句,eval 
  242.         */ 
  243.         public static function Eval(code:String):Object 
  244.         { 
  245.             var rtn:Object = ExternalInterface.call("eval",code + ";void(0);"); 
  246.             return rtn; 
  247.         } 
  248.   
  249.         /** 
  250.         * URL编码,encoding为空时应用统一的UTF-8编码处理,可设"GB2312"、"UTF-8"等,(兼容性处理,对应JS中的escape) 
  251.         */ 
  252.         public static function UrlEncode(str:String,encoding:String = ""):String 
  253.         { 
  254.             if (str == null || str == "") 
  255.             { 
  256.                 return ""; 
  257.             } 
  258.             if (encoding == null || encoding == "") 
  259.             { 
  260.                 return encodeURI(str); 
  261.             } 
  262.             var returnValue:String = ""; 
  263.             var byte:ByteArray =new ByteArray(); 
  264.             byte.writeMultiByte(str,encoding); 
  265.             for (var i:int; i<byte.length; i++) 
  266.             { 
  267.                 returnValue +=  escape(String.fromCharCode(byte[i])); 
  268.             } 
  269.             return returnValue; 
  270.         } 
  271.   
  272.         /** 
  273.         * URL解码,encoding为空时应用统一的UTF-8编码处理,可设"GB2312"、"UTF-8"等,(兼容性处理,对应JS中的unescape) 
  274.         */ 
  275.         public static function UrlDecode(str:String,encoding:String = ""):String 
  276.         { 
  277.             if (str == null || str == "") 
  278.             { 
  279.                 return ""; 
  280.             } 
  281.             if (encoding == null || encoding == "") 
  282.             { 
  283.                 return decodeURI(str); 
  284.             } 
  285.             var returnValue:String = ""; 
  286.             var byte:ByteArray =new ByteArray(); 
  287.             byte.writeMultiByte(str,encoding); 
  288.             for (var i:int; i<byte.length; i++) 
  289.             { 
  290.                 returnValue +=  unescape(String.fromCharCode(byte[i])); 
  291.             } 
  292.             return returnValue; 
  293.         } 
  294.   
  295.   
  296.     } 
  297. } 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器