首页 > 其他分享 >AS:Flash AS3中获取浏览器信息及URL相关参数(并非swf url地址)

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

时间:2023-01-05 12:06:49浏览次数:55  
标签:AS3 function return String URL Flash static returnValue public

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

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

IE:

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

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

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

FF,即FireFox(火狐中国版)

 

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

以下是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;
}


}
}


 

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

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

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

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

标签:AS3,function,return,String,URL,Flash,static,returnValue,public
From: https://blog.51cto.com/kenkao/5990012

相关文章

  • Django报错No module named django.core.urlresolvers
    当需要测试django能否解析网站根路径的URL,并将其对应到我们编写的某个视图函数上时,使用下面的语句fromdjango.core.urlresolversimportresolve执行代码时出现错误......
  • ubunut安装flash
    1kxb@kxb:~$sudoapt-getinstallflashplugin-installer2[sudo]kxb的密码:3正在读取软件包列表...完成4正在分析软件包的依赖关系树5正在读取......
  • 关于HTTP GET请求的url中文参数编码
    场景:前端用JS构造了一个GET请求,携带了一个中文的参数,通过SpringMVC传到后台以后解析中文是乱码。1.发送请求,从浏览器中捕获到http的请求内容如下:1RemoteAddress:[::......
  • 解析URL中的携带的参数到Map
    手动解析URL字符串中的参数,写了一个工具类。1finalintMIN_ARRAY_LEN=2;2finalintDIVIDE_INTO_PAIRS=2;34publicMap<String,String>p......
  • urllib基本使用
    urllib基本使用​ 官方文档:https://docs.python.org/zh-cn/3/library/urllib.html​ Pythonurllib库用于操作网页URL,并对网页的内容进行抓取处理,包含4个模块:request、......
  • url输入到返回请求的过程
    年前准备换工作,总结了一波面试最频繁的面试问题跟大家交流。此文章是关于浏览器的常见问题,大概面试10家遇到6家提问类似问题(主要是大厂和中厂)。(面试的部分内容已经忘了,为了......
  • Failed to configure a DataSource: 'url' attribute is not specified spring boot3
     springboot的配置文件名由application.yml改为bootstrap.yml或者bootstrap.properties报错:FailedtoconfigureaDataSource:'url'attributeisnotspecifiedand......
  • Django的urls配置(斜杠/变量/正则)
    url中的斜杠若path中带了斜杠,浏览器输入的url也是带斜杠的则直接可访问 若path中带斜杠,浏览器中输入的url最后未带斜杠,则会301重定向一次到带斜杠的地址......
  • Nginx 过滤url
    1、用在if中的正则表达式,下表:  说明:~匹配!~不匹配*不区分大小写这样比较好记忆。2、测试location/{if($request_uri!~"hello"){......
  • 痞子衡嵌入式:探讨i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT下FlexSPIdriver实现Flash编程时对于中断支持问题。前段时间有客户在官方社区反映i.MXR......