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. Win7删除远程连接历史记录

    打开注册表,找到 HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default 删除右侧的 MRUn(n是索引号) 项 即可.

  2. Python运维开发基础08-文件基础

    一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...

  3. Cocoa Touch(四): 多线程GCD, NSObject, NSThread, NSOperationQueue

    多线程的重要性不必多言,现代操作系统不可能离开进程线程的抽象.具体到ios应用,我们只能在一个进程中管理线程,主线程不应该去执行非常耗时间的后台操作导致出现卡机现象,后台的事情交给后台线程来完成. G ...

  4. mysql添加表注释、字段注释、查看与修改注释

    1 创建表的时候写注释create table test1( field_name int comment '字段的注释')comment='表的注释'; 2 修改表的注释alter table te ...

  5. 利率计算v4.0--测试--软件工程

    利率计算v4.0--测试 package Test; import Model.Interest; import Service.CompoundInterestService; import Ser ...

  6. 配置yum源方法,以及失效时的处理

    正常方法如下: step1: 备份原CentOS-Base.repo 文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-B ...

  7. marioTcp

    https://github.com/nicholaszj/marioTcp MarioTCP MarioTCP 是使用libevent模型来建立的一个性能强大的TCP服务器. 1:Getting S ...

  8. [OS]windows 2012 server-Local users and groups-Backup Operators

    怎样找到windows 2012 server上的Backup Operators Press the Windows + R keys to open the Run dialog, type lu ...

  9. 利用FFmpeg转压视频的说明

    当我们制作视频的时候,录制完成的视频往往很大,很容易超过50M,上传的时候会很慢.下面将相关技巧说明如下(转载,版权属于原作者所有). 利用FFmpeg转压视频的说明 录制介绍视频时可以用尽可能高的分 ...

  10. Modelsim设置数据以模拟波形显示

    选中希望以模拟波形显示的信号,右击选择format—>Analog(automatic) 如果你的数据是用无符号数表示一个完整的波形的,那么可能显示出来的波形样子是下面的样子,不过不要紧,这是因 ...