<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>test</title>
<script src="jquery-1.5.min.js"></script>
</head>
<body>
<script>
/* MyURL class */
var MyURL = (function() {
//"http://google.com" => {href: "", protocol: "", ...}
function _parseurl(str) {
var reg = /^(?:([a-zA-Z]+):)?(\/{0,3})([0-9.\-a-zA-Z]+)(?::(\d+))?(?:\/([^?#])*)?(?:\?([^#]*))?(?:#(.*))?$/;
if(!reg.test(str)){
alert("erro url");
return;
}
var objOut = {};
var arrObj = reg.exec(str);
objOut["href"] = arrObj[0];
objOut["protocol"] = arrObj[1];
objOut["hostname"] = arrObj[3];
var start =0;
for(var i=1;i<4;i++){
start = start + parseInt(arrObj[i].length);
}
//show exist search or hash or pathname
if(str.length > (start + 2)){
start = start + 1;
var str2 = str.substring(start),
flag1 = str.indexOf("?"),
flag2 = str.indexOf("#");
endStr = 0;
if(flag1 == -1 && flag2 == -1){// no exist ? or #
endStr = str2.length;
}else if(flag1 != -1 && flag2 == -1){// exist ? no #
endStr = str2.indexOf("?");
var arrStr = str2.substring(endStr).split("?");
objOut["search"] = "?" + arrStr[1];
}else if(flag1 == -1 && flag2 != -1){// exist $ no ?
endStr = str2.indexOf("#");
var arrStr = str2.substring(endStr).split("#");
objOut["hash"] = "#" + arrStr[1];
}else if(flag1 != -1 && flag2 != -1){// exist $ no ?
if(flag1 > flag2){// # be seated on front
endStr = str2.indexOf("#");
var arrStr = str2.substring(endStr).split("?");
objOut["search"] = "?" + arrStr[1];
objOut["hash"] = arrStr[0];
}else{//? be seated on front
endStr = str2.indexOf("?");
var arrStr = str2.substring(endStr).split("#");
objOut["search"] = arrStr[0];
objOut["hash"] = "#" + arrStr[1];
}
}
objOut["pathname"] = str2.substring(0,endStr);
}
return objOut;
}
//{a: 1, b: 2} => "a=1&b=2"
function _serialize(obj) {
var arrTemp = [];
for(var key in obj) {
arrTemp.push([key, obj[key]].join("="));
}
return arrTemp.join("&");
}
//"a=1&b=2" => {a: 1, b: 2}
function _deserialize(str) {
var objOut = {},
arrTemp1 = [],
arrTemp2 = str.split("&");
for(var i = 0, len = arrTemp2.length; i < len; i++) {
arrTemp1 = arrTemp2[i].split("=");
objOut[arrTemp1[0]] = arrTemp1[1];
}
return objOut;
}
return function(url) {
var _hash = "",
_hostname = "",
_href = "",
_pathname = "",
_port = "",
_protocol = "",
_search = "",
_query = {};
function _updateToSearch() {
if(jQuery.isEmptyObject(_query)) {
_search = "";
return;
}
_search = "?" + _serialize(_query);
}
function _updateFromSearch() {
if(!_search) {
_query = {};
return;
}
_query = _deserialize(_search.slice(1));
}
function _updateToHref() {
_href = [
_protocol,
"//",
_hostname,
_port ? ":" + _port : _port,
_pathname,
_search,
_hash
].join("");
}
function _updateFromHref() {
_hash = "",
_hostname = "",
_pathname = "",
_port = "",
_protocol = "",
_search = "",
_query = {};
}
function _init(obj) {
_hash = obj["hash"] || "";
_hostname = obj["hostname"] || "";
_href = obj["href"] || "";
_pathname = obj["pathname"] || "";
_port = obj["port"] || "";
_protocol = obj["protocol"] || "";
_search = obj["search"] || "";
_query = _deserialize(_search) || {};
}
this.hash = function(value) {
if(value) {
_hash = value;
_updateToHref();
return this;
} else {
return _hash;
}
};
this.hostname = function(value) {
if(value) {
_hostname = value;
_updateToHref();
return this;
} else {
return _hostname;
}
};
this.href = function(value) {
if(value) {
_href = value;
_updateFromHref();
return this;
} else {
return _href;
}
};
this.pathname = function(value) {
if(value) {
_pathname = value;
_updateToHref();
return this;
} else {
return _pathname;
}
};
this.port = function(value) {
if(value) {
_port = value;
_updateToHref();
return this;
} else {
return _port;
}
};
this.protocol = function(value) {
if(value) {
_protocol = value;
_updateToHref();
return this;
} else {
return _protocol;
}
};
this.search = function(value) {
if(value) {
_search = value;
_updateToHref();
_updateFromSearch();
return this;
} else {
return _search;
}
};
this.query = function(key, value) {
switch(typeof key) {
case "string":
if(value) {
_query[key] = value;
_updateToSearch();
_updateToHref();
return this;
} else {
return _query[key];
}
break;
case "object":
for(var k in key ) {
_query[k] = key[k];
}
_updateToSearch();
_updateToHref();
return this;
break;
case "undefined":
return _query;
break;
default:
return this;
}
};
//constructor code
switch(typeof url) {
case "string":
_init(_parseurl(url));
break;
case "object":
_init(url);
break;
default:
_init(location);
}
}
})();
//
var obj = new MyURL("http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?showone=Semicolons#Semicolons");
</script>
</body>
</html>
分享到:
相关推荐
使用httpclient抓取页面信息时需要填写HOST,使用此正则提取抓取URL的HOST内容
6、视图及解析器 7、其它 目录: Spring MVC 3.0新特性 Spring MVC框架结构 Spring MVC框架结构 框架的实现者 目录 HTTP请求映射原理 Spring MVC进行映射的依据 通过URL限定:URL表达式 通过URL限定:绑定{xxx}中的值 ...
6、视图及解析器 7、其它 目录: Spring MVC 3.0新特性 Spring MVC框架结构 Spring MVC框架结构 框架的实现者 目录 HTTP请求映射原理 Spring MVC进行映射的依据 通过URL限定:URL表达式 通过URL限定:绑定{...
主要介绍了java获取百度网盘真实下载链接的方法,涉及java针对URL操作及页面分析的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
(SpringBoot2+Vue2),全局异常拦截器,登录校验拦截器,Echarts展示借阅量,可添加爬虫功能获取图书数据。API认证采用JWT。后端CORS跨域支持。HTTP Status Code表示状态。数据返回格式JSON。 爬虫(Web Crawler)是...
【功能介绍】:①兼容市面上主流的多家相机,理论上兼容所有硬件,可灵活扩展,②相机识别后数据自动上传到云端并记录,校验相机唯一id和硬件序列号,防止非法数据录入,③用户手机查询停车记录详情… 爬虫(Web ...
【功能介绍】:①兼容市面上主流的多家相机,理论上兼容所有硬件,可灵活扩展,②相机识别后数据自动上传到云端并记录,校验相机唯一id和硬件序列号,防止非法数据录入,③用户手机查询停车记录详情可自主缴费 ...
(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 JavaBean 映射至 XML 文档,以及相反映射的服务. Chain Chain 提供...
webargs:一个解析 HTTP 请求参数的库,内置对流行 web 框架的支持,包括 Flask, Django, Bottle, Tornado和 Pyramid webargs 主页:https://webargs.readthedocs.io/ webargs 是一个用于解析和验证 HTTP 请求对象的...
URL也可以查询以简化集成。 IBAN 可以在人类和机器表示之间转换。 IBAN 可能会被混淆,以便在特殊情况下(例如亲属身份)向人类展示。 包括来自不同国家的示例/测试 IBAN 数据库。 最后,当检测到不正确的 IBAN 并且...
现在有这样一个问题,就是在提交大片文字评论的时候,前台拿到数据之后给后台发送ajax请求,然后后台有一个防止SQL注入的Filter,这个Filter得到这个前台传过来的数据之后,进行合法性校验,如果没有校验成功,那么...
3.按照企微规范定义controller的接收值,能实现企微代开发回调的GET校验,POST传值,快速响应,异步处理。 4.按照企微规范实现回调数据的验签解析。开发人员只需要注重自己的业务代码。 4.按照企微规范提供丰富的...
*抓取信息的准确性高,系统提供了强大的数据校验功能,保证了数据的正确性 *支持断点续抓,在当机或出现异常情况后可以恢复抓取,继续后续的抓取工作,提高了系统的抓取效率 *对于列表页,支持翻页,可以抓取到...
*抓取信息的准确性高,系统提供了强大的数据校验功能,保证了数据的正确性 *支持断点续抓,在当机或出现异常情况后可以恢复抓取,继续后续的抓取工作,提高了系统的抓取效率 *对于列表页,支持翻页,可以抓取到...
复制代码 代码如下:$data = array(“name” => “Hagrid”, “age” => “36”);$data_string = json_encode($data); ...curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “POST”);curl_setopt($ch, CURLOPT_POSTFIELDS,$...
SQL注入是指将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。当Web应用程序的开发人员对用户所输入的数据不进行过滤或验证(即存在注入点...
基于socket的http多线程下载,传入的url(这个url必须是可以下载的、请求资源的连接)、下载的线程数、保存的本地位置这三个参数,然后通过解析url,获取host、path、port等信息来组装报文。 先发送head请求来获得...
3. 解析该HTTP请求返回值(XML或JSON); 4. 响应结果; 5. 测试; 备注: 开发一个需要对第三方应用发布的WebService 步骤: a. 开发WebService接口,@WebService进行注解该接口; b. 开发WebService接口实现类...
url验证域必须为URL地址。当前不支持含有非英文(中文等)字符的地址。测试文件入口./test/index.html 原生JavaScript支持测试./test/node.js Node.js支持测试./test/requirejs.html RequireJS支持测试./test/...
说明:某些网络问题导致解析时提示"不可达URL"时,请稍微等一会在下,最好把在线视频,下载,上传等软件关闭,等网络状况比较好的时候在下载5.说明:某些特殊图书在用大图模式下载时会出现怎么也下载不了的现象,请稍后在...