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

[AS3]AS3获取用户浏览器地址信及URL相关参数(3)

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

 

热门文章推荐

请稍候...

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

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