package com.controls.utils
{
import flash.net.*;
import flash.utils.ByteArray;
import flash.external.ExternalInterface;
/**
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2017-3-6 下午7:44:15
*
*/
/**
* 统一资源定位符 (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;
}
}
}

用法测试

 package com.view
{
import com.controls.utils.WebUtils; import flash.display.*;
import flash.display.Sprite;
import flash.events.*;
import flash.text.TextField; /**
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2017-3-6 下午7:42:03
*
*/
public class Test extends Sprite
{
private var _t0:TextField = createText();
private var _t1:TextField = createText();
private var _t2:TextField = createText();
private var _jsAlert:TextField = createButton("Alert");
private var _jsOpen:TextField = createButton("Open");
private var _jsURL:TextField = createButton("URL");
public function Test()
{
addChildren(_t0,this,100,100);
addChildren(_t1,this,100,130);
addChildren(_t2,this,100,230);
addChildren(_jsAlert,this,100,50);
addChildren(_jsOpen,this,150,50);
addChildren(_jsURL,this,200,50);
this.addChild(_t0);
this.addChild(_t1);
this.addChild(_t2);
this.addChild(_jsAlert);
this.addChild(_jsOpen);
this.addChild(_jsURL);
_t0.appendText(WebUtils.BrowserAgent); _t1.appendText("是否是IE:"+WebUtils.IsIE.toString()+ "\r\n");
_t1.appendText("是否是FireFox:"+WebUtils.IsMozilla.toString()+ "\r\n");
_t1.appendText("是否是Safari:"+WebUtils.IsSafari.toString()+ "\r\n");
_t1.appendText("是否是Opera:"+WebUtils.IsOpera.toString()+ "\r\n");
_t1.appendText("浏览器类型:"+WebUtils.BrowserMatch().browser+" 浏览器版本:"+WebUtils.BrowserMatch().version + "\r\n"); _t2.appendText("获取URL地址:" +WebUtils.Url + "\r\n");
_t2.appendText("获取所有URL参数:" + WebUtils.QueryString + "\r\n");
_t2.appendText("获取URL参数id=:" + WebUtils.Request("id") + "\r\n");
_t2.appendText("获取锚点参数:" + WebUtils.Hash + "\r\n");
_t2.appendText("cuplayer.com提示获取主机头:" + WebUtils.Host + "\r\n");
_t2.appendText("获取访问协议:" + WebUtils.Protocol + "\r\n");
_t2.appendText("获取访问端口:" + WebUtils.Port + "\r\n");
_t2.appendText("cuplayer.com提示获取页面名称路径:" + WebUtils.PathAndName + "\r\n");
_t2.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('cuplayer.com提示弹出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");
}
private function addChildren(child:DisplayObject,parent:DisplayObjectContainer,x:Number=0,y:Number=0):void
{
parent.addChild(child);
child.x = x;
child.y = y;
}
private function createText():TextField
{
var t:TextField = new TextField();
t.autoSize = "left";
//t.wordWrap = true;
return t;
}
private function createButton(label:String):TextField
{
var t:TextField = new TextField();
t.autoSize = "left";
t.text = label;
t.border = true;
t.borderColor = 0xcccccc;
t.background = true;
t.backgroundColor = 0xFFFFFF;
t.selectable = false;
return t;
}
}
}

[ActionScript 3.0] 通过as3操作web内容的更多相关文章

  1. [ActionScript 3.0] AS3.0 动态加载显示内容

    可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...

  2. [ActionScript 3.0] as3处理xml的功能和遍历节点

    as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象 ...

  3. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(零) 前言(内容已过期,阅读请慎重)

    2018-09-19 更新 :现在已经更新ASP.NET Core Middleware版本.对.NET Core SignalR感兴趣的朋友移步:https://github.com/fanpan2 ...

  4. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室 实战系列(内容已过期,阅读请慎重)

    项目简介 利用ASP.NET SignalR技术与Layim前端im框架实现的一个简单的web聊天室,包括单聊,群聊,加好友,加群,好友搜索,管理,群组管理,好友权限设置等功能.涉及技术: Elast ...

  5. [ActionScript 3.0] 正则表达式

    正则表达式: 正则表达式最早是由数学家Stephen Kleene在对自然语言的递增研究成果的基础上,于1956提出来的.具有完整语法的正则表达式,主要使用在字符串的格式的匹配方面上,后来也逐渐应用到 ...

  6. ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...

  7. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(五) 之 加好友,加群流程,消息管理和即时消息提示的实现

    前言 前前一篇留了个小问题,在上一篇中忘了写了,就是关于LayIM已经封装好的上传文件或者图片的问题.对接好接口之后,如果上传速度慢,界面就会出现假死情况,虽然文件正在上传.于是我就简单做了个图标替代 ...

  8. [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    本文转自:http://www.cnblogs.com/artwl/p/3396330.html 近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0, ...

  9. 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程

    在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...

随机推荐

  1. 模m的剩余类里的一切数与m的最大公约数相等

    [模m的剩余类里的一切数与m的最大公约数相等] 设剩余类里的任意两元素,a.b.则: a=mq1+r1, b= mq2+r1. 根据上式可得,(a,m)=(m,r1), (b,m)=(m,r2).可推 ...

  2. Python_07-常用函数

    1     python常用常用函数 1.1      常用内置函数 1.2      类型转换函数 1.3      和操作系统相关的调用 1.3.1       操作举例 1.4      用os ...

  3. python3菜鸟教程

    http://www.runoob.com/python3/python3-class.html

  4. 90. Subsets II (Back-Track, DP)

    Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...

  5. 7-linux-Centos7安装python3并与python2共存

    转载自:https://www.cnblogs.com/JahanGu/p/7452527.html linux-Centos7安装python3并与python2共存   1.查看是否已经安装Pyt ...

  6. 10 Examples of HotSpot JVM Options in Java[z]

    There are hundreds of JVM parameters or JVM Options exists inside sun JDK and its virtually impossib ...

  7. ubuntu账户密码正确但是登录不进去系统

    ubuntu12.04管理员账户登录不了桌面,只能客人会话登录 求助!!ubuntu12.04管理员账户登录不了桌面,只能客人会话登录. ctrl+alt+f1 ,切换到tty1,输入管理员帐号和密码 ...

  8. code1105 过河

    dp方程很简单: f[i] = min{ f[i-j] } + stone[i] 但是数据10^9太大了,超时超空间,这样只能过30% 来自:http://blog.csdn.net/w1996070 ...

  9. ubuntu登陆无限循环

    现象:在Ubuntu登陆界面输入密码之后,黑屏一闪并且出现了check battery state之类的文字之后,又跳转到登录界面. 原因:主目录下的.Xauthority文件拥有者变成了root,从 ...

  10. C#使用互斥量(Mutex)实现多进程并发操作时多进程间线程同步操作(进程同步)的简单示例代码及使用方法

    本文主要是实现操作系统级别的多进程间线程同步(进程同步)的示例代码及测试结果.代码经过测试,可供参考,也可直接使用. 承接上一篇博客的业务场景[C#使用读写锁三行代码简单解决多线程并发写入文件时线程同 ...