原文链接:AS:Flash AS3中获取浏览器信息及URL相关参数(并非swf url地址)

好久没来这里了,最近发现网络上对此类信息的封装少的可怜,没有一个是比较完整的,今天又是周未,不敲点代码手痒痒的,^_^,所以本人手贱借此时发布一篇是关于 AS3中获取浏览器信息及URL相关参数的WebUtils类,欢迎大家拍砖以使此类更丰富一些!

先来看看效果,因本机没装多个浏览器测试,所以只截了几个浏览器的获取的结果

IE:

360,内核是IE核心,所以效果跟IE基本一样

FF,即FireFox(火狐中国版)

以下是Test.as测试类:

package
{ import flash.events.*; import flash.display.*; import fl.controls.Button; import com.VvxT.WebUtils; public class Test extends MovieClip { public function Test() { txt0.appendText(WebUtils.BrowserAgent); txt1.appendText("是否是IE:"+WebUtils.IsIE.toString()+ "\r\n"); txt1.appendText("是否是FireFox:"+WebUtils.IsMozilla.toString()+ "\r\n"); txt1.appendText("是否是Safari:"+WebUtils.IsSafari.toString()+ "\r\n"); txt1.appendText("是否是Opera:"+WebUtils.IsOpera.toString()+ "\r\n"); txt1.appendText("浏览器类型:"+WebUtils.BrowserMatch().browser+" 浏览器版本:"+WebUtils.BrowserMatch().version + "\r\n"); txt2.appendText("获取URL地址:" +WebUtils.Url + "\r\n"); txt2.appendText("获取所有URL参数:" + WebUtils.QueryString + "\r\n"); txt2.appendText("获取URL参数id=:" + WebUtils.Request("id") + "\r\n"); txt2.appendText("获取锚点参数:" + WebUtils.Hash + "\r\n"); txt2.appendText("获取主机头:" + WebUtils.Host + "\r\n"); txt2.appendText("获取访问协议:" + WebUtils.Protocol + "\r\n"); txt2.appendText("获取访问端口:" + WebUtils.Port + "\r\n"); txt2.appendText("获取页面名称路径:" + WebUtils.PathAndName + "\r\n"); txt2.appendText("页面编码:" + WebUtils.PageEncoding + "\r\n"); jsAlert.addEventListener(MouseEvent.CLICK,btnAlertClick); jsOpen.addEventListener(MouseEvent.CLICK,btnOpenClick); jsUrl.addEventListener(MouseEvent.CLICK,btnUrlClick); } private function btnAlertClick(evt:MouseEvent):void{ WebUtils.Alert('弹出JS对话框示例!'); } private function btnOpenClick(evt:MouseEvent):void{ WebUtils.Eval("javascript:window.open('http://www.baidu.com','newwindow')"); } private function btnUrlClick(evt:MouseEvent):void{ WebUtils.Redirect("Test.html?id="+Math.ceil(Math.random()*999999)+"&cid=ok&page="+Math.ceil(Math.random()*10)+"#end"); } }
}

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

package com.VvxT
{ import flash.net.*; import flash.utils.ByteArray; import flash.external.ExternalInterface; /** * 统一资源定位符 (Uniform Resource Locator, URL) 完整的URL由这几个部分构成: * scheme://host:port/path?query#fragment * PS:所有获取失败时返回null或"" */public class WebUtils { private static var regWebkit:RegExp = new RegExp("(webkit)[ \\/]([\\w.]+)","i"); /** * 整个URl字符串 EX.:返回值:http://www.test.com:80/view.html?id=123#start */public static function get Url():String{ return getUrlParams("url"); } /** * 整个URl字符串 EX.:返回值:http://www.test.com:80/view.html?id=123#start */public static function get Href():String{ return getUrlParams("href"); } /** * 获取URL中的锚点(信息片断) EX.:返回值:#start */public static function get Hash():String{ return getUrlParams("hash"); } /** * URL 的端口部分。如果采用默认的80端口(PS:即使手动添加了:80),那么返回值并不是默认的80而是空字符。 */public static function get Port():String{ return (getUrlParams("port") ? getUrlParams("port") : "80"); } /** * URL 的路径部分(就是文件地址) EX.:返回值:/view.html */public static function get PathAndName():String{ return getUrlParams("PathAndName"); } /** * URL 的路径部分(就是文件地址) EX.:返回值:/view.html */public static function get Pathname():String{ return getUrlParams("pathname"); } /** * 查询(参数)部分。除了给动态语言赋值以外的参数 EX.:返回值:?id=123 */public static function get Search():String{ return getUrlParams("search"); } /** * 查询(参数)部分。除了给动态语言赋值以外的参数 EX.:返回值:?id=123 */public static function get QueryString():String{ return getUrlParams("query"); } /** * URL 的协议部分 EX.:返回值:http:、https:、ftp:、maito:等 */public static function get Protocol():String{ return getUrlParams("protocol"); } /** * URL 的主机部分,EX.:返回值:www.test.com */public static function get Host():String{ return getUrlParams("host"); } public static function Request(param:String):String{ var returnValue:String; try{ var query:String = QueryString.substr(1); var urlv:URLVariables=new URLVariables(); urlv.decode(query); returnValue = urlv[param]; } catch (error:Object) { } if (returnValue == null) { returnValue = ""; } return returnValue; } private static function getUrlParams(param:String):String{ var returnValue:String; switch (param) { case "PathAndName" : returnValue = ExternalInterface.call("function getUrlParams(){return window.location.pathname;}"); break; case "query" : returnValue = ExternalInterface.call("function getUrlParams(){return window.location.search;}"); break; case "url" : returnValue = ExternalInterface.call("function getUrlParams(){return window.location.href;}"); break; default : returnValue = ExternalInterface.call("function getUrlParams(){return window.location." + param + ";}"); break; } return (returnValue ? UrlDecode(returnValue):""); } /** * 获取浏览器信息 */public static function get BrowserAgent():String{ var returnValue:String = ExternalInterface.call("function BrowserAgent(){return navigator.userAgent;}"); return (returnValue ? returnValue:""); } /** * 是否IE浏览器 */public static function get IsIE():Boolean{ return (BrowserMatch().browser.toLowerCase() == "msie"); } /** * 是否FireFox浏览器 */public static function get IsMozilla():Boolean{ return (BrowserMatch().browser.toLowerCase() == "mozilla"); } /** * 是否Safari浏览器 */public static function get IsSafari():Boolean{ return regWebkit.test(BrowserAgent); } /** * 是否Opera浏览器 */public static function get IsOpera():Boolean{ return (BrowserMatch().browser.toLowerCase() == "opera"); } /** * 获取浏览器类型及对应的版本信息 EX.:BrowserMatch().browser  BrowserMatch().version */public static function BrowserMatch():Object{ var ua:String = BrowserAgent; var ropera:RegExp = new RegExp("(opera)(?:.*version)?[ \\/]([\\w.]+)","i"); var rmsie:RegExp = new RegExp("(msie) ([\\w.]+)","i"); var rmozilla:RegExp = new RegExp("(mozilla)(?:.*? rv:([\\w.]+))?","i"); var match:Object = regWebkit.exec(ua) || ropera.exec(ua) || rmsie.exec(ua) || ua.indexOf("compatible") < 0 && rmozilla.exec(ua) || []; return { browser: match[1] || "", version: match[2] || "0" }; } /** * 获取页面编码方式,EX.:返回值:GB2312、UTF-8等; */public static function get PageEncoding():String{ var returnValue:String = ExternalInterface.call("function PageEncoding(){return window.document.charset;}");//IE if (returnValue == null) { returnValue = ExternalInterface.call("function PageEncoding(){return window.document.characterSet;}"); }//FF //获取成功 if (returnValue != null) { returnValue = returnValue.toUpperCase(); } return (returnValue ? returnValue:""); } /** * 通过js弹出浏览器提示alert,EX.:Alert("Test"); */public static function Alert(msg:String):void{ navigateToURL(new URLRequest("javascript:alert('"+msg+"');"), "_self"); } /** * 通过js的open新窗口打开,(PS:多标签浏览器则新建一个标签打开) */public static function Open(url:String):void{ Eval("javascript:window.open('"+url+"','newwindow')"); } /** * URL重定向,使用replace函数,(PS:取消浏览器的前进后退,防止刷新回发数据) */public static function Redirect(url:String):void{ Eval("window.location.replace('"+url + "')"); } /** * URL重定向,使用内部navigateToURL函数,(PS:简化了不用每次都new URLRequest的操作) */public static function NavigateToURL(url:String,target:String="_self"):void{ navigateToURL(new URLRequest(url), target); } /** * 运行js语句,eval */public static function Eval(code:String):Object{ var rtn:Object = ExternalInterface.call("eval",code + ";void(0);"); return rtn; } /** * URL编码,encoding为空时应用统一的UTF-8编码处理,可设"GB2312"、"UTF-8"等,(兼容性处理,对应JS中的escape) */public static function UrlEncode(str:String,encoding:String = ""):String{ if (str == null || str == "") { return ""; } if (encoding == null || encoding == "") { return encodeURI(str); } var returnValue:String = ""; var byte:ByteArray =new ByteArray(); byte.writeMultiByte(str,encoding); for (var i:int; i<byte.length; i++) { returnValue +=  escape(String.fromCharCode(byte[i])); } return returnValue; } /** * URL解码,encoding为空时应用统一的UTF-8编码处理,可设"GB2312"、"UTF-8"等,(兼容性处理,对应JS中的unescape) */public static function UrlDecode(str:String,encoding:String = ""):String{ if (str == null || str == "") { return ""; } if (encoding == null || encoding == "") { return decodeURI(str); } var returnValue:String = ""; var byte:ByteArray =new ByteArray(); byte.writeMultiByte(str,encoding); for (var i:int; i<byte.length; i++) { returnValue +=  unescape(String.fromCharCode(byte[i])); } return returnValue; } }
}

以下是所有文件的打包,方便读者测试:

http://files.cnblogs.com/VvxT/WebUtils.rar

PS:以上均为原创,欢迎讨论拍砖!

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

汗,研究了一会,没有看到有Flash或AS3类的分类,不知发布到哪里了,随便选了一个Flex,哈哈

AS:Flash AS3中获取浏览器信息及URL相关参数(并非swf url地址)相关推荐

  1. JS 获取浏览器信息,给出友情提示,避免部分兼容性问题

    最近在做webform,浏览器兼容是个问题,这里我收集了一些获取浏览器信息的资料,可以给一些用户使用时,提示浏览器版本过低,让升级版本用. 这样会给开发的我们,省下很多用来调试兼容性的时间和精力.  ...

  2. as3 转义html,html和xml中的转义字符在Flash as3中的用法浅析

    html和xml中的转义字符在Flash as3中的用法浅析 來源:互聯網  2009-01-04 23:28:37  評論 在as3中使用特殊字符的时候,不小心就会出现错误,要么字符没有被显示,要么 ...

  3. PowerShell_零基础自学课程_6_PS中获取帮助信息详解、管道、格式化输

    前些文章陆续的说了一些关于这些主题,但是讨论的都不够深入,今天我们深入的了解一下获取帮助信息.管道以及格式化输出的内容. 一.获取帮助信息 在PS中获取帮助信息,最常用的有: -? .get-comm ...

  4. PowerShell_6_零基础自学课程__6_PS中获取帮助信息详解、管道、格式化输

    前些文章陆续的说了一些关于这些主题,但是讨论的都不够深入,今天我们深入的了解一下获取帮助信息.管道以及格式化输出的内容. 一.获取帮助信息 在PS中获取帮助信息,最常用的有: -? .get-comm ...

  5. as3 访问远程计算机,Flash AS3中数据发送与接收

    Flash AS3中数据发送与接收 互联网   发布时间:2008-10-06 01:24:53   作者:佚名   我要评论 先回顾一下as2中相关的解决办法 相信大部分人用的都是LoadVars类 ...

  6. java中如何设置浏览器宽度_[Java教程]关于JS中获取浏览器高度和宽度值的多种方法(多浏览器)_星空网...

    关于JS中获取浏览器高度和宽度值的多种方法(多浏览器) 2017-08-07 0 三种浏览器获取值方法 IE中: document.body.clientWidth ==> BODY对象宽度 d ...

  7. java如何取到配置文件中值,从配置文件中获取配置信息的几种方法

    1.利用ResourceBundle类从properties文件中获取配置信息 创建配置文件并写入配置信息 image.png 使用以下代码可以轻松获取配置信息 package com.course. ...

  8. Android中获取屏幕信息的几种方式

    Android中获取屏幕信息的几种方式 方案一 方案二 方案三 Note:以下方案中的this均指Activity. 方案一 WindowManager wm = (WindowManager) th ...

  9. excel从身份证号码中获取邮编信息?

    今天跟大家分享一下excel从身份证号码中获取邮编信息? 1.打开excel身份证号码文件,现在要求我们快速根据身份证号码提取邮编信息. 2.首先我们选中身份证号码单元格,点击[DIY工具箱]选项卡 ...

最新文章

  1. oracle快速导出1t数据,使用sqluldr2快速高效大批量导出Oracle数据
  2. JAVA正则表达式:Pattern类与Matcher类详解(转)
  3. Boost::context模块fiber的jump_mov测试程序
  4. PHP标题获取数据库内容,php – 如何从数据库获取项目的标题并将其发送到CodeIgniter中的标题模板...
  5. 安装Python第三方库方法总结
  6. 洛谷 P2089 烤鸡
  7. 机器学习入门系列:关于机器学习算法你需要了解的东西、如何开发机器学习模型?...
  8. Hosts 文件作用及如何修改
  9. 免费的录屏软件Capture
  10. 托马斯微积分是数学守旧派的代表作
  11. NXP KV30 SDK使用心得
  12. 月薪6000艰难追上海美女路
  13. 如何用纯 CSS 创作一个永动的牛顿摆
  14. 在前端实现excel导入,在线编辑,导出,打印等功能
  15. 微信小程序的重点(重中之重)
  16. 【NOI2007】社交网络
  17. 设计模式汇总,对应Android系统源码举例,保你一次看个够
  18. java计算机毕业设计ssm社区团购系统13kbd(附源码、数据库)
  19. [Ant自动打包]ant执行命令的详细参数和Ant自带的系统属性
  20. java 设计模式 路由器_java设计模式2————工厂模式

热门文章

  1. c语言发牌小游戏,大家想想怎么用c实现我们经常玩的斗地主游戏的发牌过程呢?...
  2. java算法腐烂橘子,答案——腐烂的橘子算法题目
  3. 2D转换综合写法(CSS3)
  4. 字体系列之字体复合属性(CSS、HTML)
  5. 一个成型的awt所必须的frame组件
  6. 输出奇数和偶数(Java)
  7. Ubuntu 14.04/16.04 (使用apt-get进行安装) 安装Docker
  8. 在计算机中 ascii码是几位二进制编码,ASCII码采用多少位二进制编码
  9. 移动应用测试基于JAVA_Appium用于测试Android混合移动应用程序
  10. 参与过上千亿项目的人,账单是何等的惊人?