很多时候我们有从一个URL中提取域名,查询关键字,变量参数值等的需要,而万万没想到可以让浏览器方便地帮我们完成这一任务而不用我们写正则去抓取。方法就在JS代码里先创建一个a标签然后将需要解析的URL赋值给a的href属性,然后就得到了一切我们想要的了。
成都创新互联公司制作网站网页找三站合一网站制作公司,专注于网页设计,网站设计、网站制作,网站设计,企业网站搭建,网站开发,建网站业务,680元做网站,已为上1000家服务,成都创新互联公司网站建设将一如既往的为我们的客户提供最优质的网站建设、网络营销推广服务!
var a = document.createElement('a');
a.href = 'htt p:/ / s.h tml';
console.log(a.host);
利用这一原理,稍微扩展一下,就得到了一个更加健壮的解析URL各部分的通用方法了。
function parseURL(url) {
var a = document.createElement('a');
a.href = url;
return {
source: url,
protocol: a.protocol.replace(':',''),
host: a.hostname,
port: a.port,
query: a.search,
params: (function(){
var ret = {},
seg = a.search.replace(/^\?/,'').split(''),
len = seg.length, i = 0, s;
for (;ilen;i++) {
if (!seg[i]) { continue; }
s = seg[i].split('=');
ret[s[0]] = s[1];
}
return ret;
})(),
file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1],
hash: a.hash.replace('#',''),
path: a.pathname.replace(/^([^\/])/,'/$1'),
relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,''])[1],
segments: a.pathname.replace(/^\//,'').split('/')
};
}
用法
var myURL = parseURL('htt p:/ /abc.com:8080/dir/inde x.h tml?id=255m=hello#top');
myURL.file; // = 'index.html'
myURL.hash; // = 'top'
myURL.host; // = 'abc.com'
myURL.query; // = '?id=255m=hello'
myURL.params; // = Object = { id: 255, m: hello }
myURL.path; // = '/dir/index.html'
myURL.segments; // = Array = ['dir', 'index.html']
myURL.port; // = '8080'
myURL.protocol; // = 'http'
myURL.source; // = 'htt p:/ /abc.com:8080/dir/index.h tml?id=255m=hello#top'
$(function(){$("#ss").click(function(){
var str="";
var msg="";
var dns=$("#dns").val();
$('[name=ext]:checkbox:checked').each(function(){str+=$(this).val()+",";})
str=str.substr(0,str.lastIndexOf(","));
var k=str.split(",");
var c = 0;
function checkDns(){
if (c k.length){
var postinfo = dns+k[c];
$.get("",
{domain:postinfo},
function(data){
var have="registered";
if (have.indexOf(data)0){
msg+=postinfo+":已经被注册";
}else{
msg+=postinfo+":还没被注册";
}
c++;
checkDns();
})
}else{
alert(msg);
}
}
checkDns();
})
})
程序是可以运行了,就是不知道checkdomain网站返回的是什么类型的数据,因为我在我电脑上看到的是空值。
jquery自身的功能是不支持的,但是你可以基于jquery实现跨域post。
jquery本身只支持jsonp跨域,但是jsonp的原理限制了只能支持get。
如果想要实现原生jquery跨域,在你的请求地址的head里面加上Access-Control-Allow-Origin,值设置成调用该API的域名(或者*),优点是代码修改少,前端js代码无需任何改动。
或者用iframe + window.name方式,比较麻烦,后端前端都要改,优点是兼容性强。
或者用postMessage,优点是方便,缺点IE支持的不是很好。