- 浏览: 334797 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- Flash | as3 (53)
- AIR | Starling (46)
- Android (55)
- Java (10)
- C++ (6)
- PHP (43)
- IOS (9)
- Unity3D (2)
- cocos2d-x (1)
- OpenGL (2)
- WebGL (3)
- Server (4)
- MemCache (13)
- MySql (2)
- NoSql (2)
- PhoneGap (13)
- jQuery | jQuery Mobile (14)
- javaScript | html5 | css3 (14)
- Linux (1)
- Box2D (2)
- SmartFox (1)
- Ruby (0)
- Python (2)
- Golang (11)
- Redis (1)
- 开源项目 (6)
- 游戏策划 (1)
- 云平台 (2)
- 项目管理 (6)
- 听见月光 (32)
最新评论
-
kenkao:
http://www.linuxidc.com/Linux/2 ...
解决idea编译时resources文件夹内容不自动复制到输出路径classes的问题 -
kenkao:
http://blog.csdn.net/yanwushu/a ...
解决idea编译时resources文件夹内容不自动复制到输出路径classes的问题 -
wpy126:
你这种比较根本不公平AppCan 用了多个页面,jqm内容都 ...
AppCan VS PhoneGap - 对比两大移动开发平台 -
kenkao:
zs12593 写道这个,这个
这里只是转载,建议看一下原文, ...
android游戏开发框架libgdx环境搭建 -
zs12593:
这个,这个
android游戏开发框架libgdx环境搭建
原文链接: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,哈哈
发表评论
-
as3 中文转拼音
2017-01-03 17:27 2430private static const PinYin:Ob ... -
解决flash builder 4.6调试不可用
2016-12-19 09:47 456来自:http://blog.csdn.net/cupi ... -
ColorMatrixFilter 色彩矩阵滤镜
2016-05-20 10:34 950包 flash.filters 类 public final ... -
ANE 在 Android 上的应用
2015-01-08 17:59 922http://blog.csdn.net/linxcool ... -
as3通用三方库大全
2014-09-25 10:41 866http://wiki.junnan.org/pages/ ... -
4个不错的Flash开源项目
2014-08-15 12:02 492原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出 ... -
Flash教程:多种图片切换效果
2014-08-12 14:16 590http://www.missyuan.com/threa ... -
DragonBones快速入门指南
2014-07-17 10:46 922DragonBones快速入门指南 ... -
[Flex]Flex编程注意之自动获取焦点、监听全局键盘事件
2014-07-17 09:40 467http://www.k-zone.cn/zblog/pos ... -
使用 jsfl 发布flash IDE 插件
2014-07-16 16:59 888http://blog.csdn.net/aosnowas ... -
as3种常见的弹性效果公式以及波形运动等as3动画效果公式代码整理
2014-07-14 09:12 945as3种常见的弹性效果公式以及波形运动等as3动画效果公式代 ... -
基于flash AS3.0 的BASE64编码与解码类
2014-07-02 13:35 658代码 Code highlighting produc ... -
FlashBuilder 4.6下载与安装
2014-06-04 17:02 4来自:http://m.oschina.net/blog/ ... -
as3绘制饼状图
2014-03-31 17:13 608来自:http://www.cnblogs.com/ddw1 ... -
Pixel Bender 浅尝
2014-03-21 17:50 732来自:http://chaimzane.iteye.com/ ... -
Flex入门的好书——《Flex3 Cookbook 中文版》
2014-01-13 13:55 809本文标题:Flex入门的好书——《Flex3 Cook ... -
MaxRects纹理合并算法as3实现
2014-01-09 17:40 3103来自:http://www.duzengqiang.com ... -
AS3之BitmapData学习整理
2013-10-24 11:05 2585http://www.cnblogs.com/ps ... -
AS3连接MYSQL数据库
2013-10-12 17:38 560原文链接:http://www.cnblogs.com/yi ... -
flash实用工具类+开源包收藏
2013-09-09 11:02 2136来自:http://blog.sina.com.cn/s/b ...
相关推荐
FlashAS教程:AS2.0制作加载外部.swf影片的视频播放器.pdf
flash cs6 as3.0编写的调用外部swf文件,并实现被导入swf文件的内外控制,被导入文件about.swf自带两个控制按钮,about.swf导入index.swf后,通过index.swf中的两个按钮控制about.swf的播放与暂停,并实现了代码的...
as3swf AS3库
flash游戏开发之 如何反编译.swf文件得到actionscript3 as3源代码.zip
AS3 调用SWF类库 调用SWF类库 调用SWF类库
flash as3 加载外部swf jpg gif png loader urlloader的通用代码
如何用as3 和 flash prefessional创建preloading程序
Flash as2.0代码大全与Flash制作技巧 2009-08-04 12:46 Flash as2.0代码大全与Flash制作技巧 外部调用swf on (release) { loadMovieNum("service.swf", 1); } 外部调用数据 loadVariablesNum("about.txt", 0); ...
flash actionscript3 as3通信 教程 socket与服务器通信, 多个swf之间通信.zip
4、使用Flash中的ExternalInterface.addCallback方法创建接口,使JS能够调用AS中的函数。 包含swfobject.js与fla源文件。 (*下载swfObject开发版及示例请访问:http://code.google.com/p/swfobject/) 兼容性,...
as3加载swf源代码,as3 +swf +xml
swf to mp3 (flash中mp3提取工具)
用AS3编写,点击不同的按钮加载不同的外部SWF文件,显示在固定尺寸的舞台上,同一时该只能加载一个外部文件,自动调整被加载文件的尺寸以适应容器大小。昨天上传那个不知道为什么见不到,再次上传并添加了部分容错...
flash幻灯片_as3,这个是as3.0的写的。 //支持as3.0 flashplayer9 //支持xml和js两种加载模式 //支持10种效果切换 //支持随机播放和顺序播放 //支持自定义网站链接,在本窗口、上层窗口和新窗口打开 //支持自定义...
flash as3 在线录音并上传;上传过程中是压缩了的,大约可以节约40%流量。不过还是很多,不知道怎么压缩成MP3,知道的,告知一下。 弄了两天,终于弄出来了,注意,不可以把swf的宽度和高度设置得比我设置的还小:...
SWF个人加密版,支持AS3.0AS2.0很强大
支持as3.0 flashplayer9 支持xml加载模式 支持10种效果切换 支持随机播放和顺序播放 支持自定义网站链接,在本窗口、上层窗口和新窗口打开 支持自定义mp3随机播放、间隔随机播放、顺序播放 支持...
Flash幻灯片AS3源码 程序介绍: 功能描述: Flash图形图像切换 支持as3.0 flashplayer9 支持xml加载模式 支持10种效果切换 支持随机播放和顺序播放 支持自定义网站链接,在本窗口、上层窗口和新窗口打开 支持...
可以无网络,要去是一个主机,两个屏 。windows系统,内有示例和原文件
SWF Flash加密,加密Flash,加密SWF Flash