我们经常会在javascript里使用到URL里传递过来的参数,比如进行一些判断或者新页面的跳转等;而且还有一种情况,虽然使用的情况不多见,但是也会遇到:比如在一个页面里引用了一个aaaaa.js文件的链接,这个链接里还带着一个参数referer,同时呢,aaaaa.js还要获取referer的值 网上有很多这样的例子,不过天下文章一大抄,他们的文章和样例都是一模一样的,解决不了我的问题。比如这个: 我们能够发现代码里,解析的是window.location.search,可是如果我想从整个URL链接里获取到我想要的参数呢,这个就不灵了。因为正则表达式的特殊性,这里的格式只能是这样子的:'?referer=wenzi'(?必须带着)。因此若想从整个URL中解析出参数的话,那就得先把URL用 url.split("?") 拆成两部分,然后使用后半部分,同时拼上"?"。就可以使用这个方法了。 不过这里我们有一个简单的方法,可是网上基本没有找到,就是修改正则表达式,以达到我们的要求,上面: 这个方法就能从完整的URL里获取参数。 如果我们某个js文件是收集性质的,或者需要区别不同地方引用的js,我们就要解析这个文件里带的参数,比如上面链接中的referer。 在这里我实现的方式的前提是:script标签是阻塞加载的,而且,我们是首先获取script里的URL,然后再解析URL里的参数! 获取到URL后再使用上面的方式解析出referer的值就行了。1. js获取URL中的参数 #
<script type="text/javascript" src="http://xxxx.com/aaaaa.js?referer=wenzi">script>
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
function getQueryString(url, name) {
var reg = new RegExp("(^|&|\\?)" + name + "=([^&]*)(&|$)", "i");
var r = url.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
2. js获取javascript链接中的参数 #
getCurrentScript : function(name){
var i = 0,
result = null,
script, scripts, url, reg, r;
// firefox支持currentScript属性
if( document.currentScript ){
script = document.currentScript
}
else{
// 正常情况下,在页面加载时,当前js文件的script标签始终是最后一个
scripts = document.getElementsByTagName( 'script' )
script = scripts[ scripts.length - 1 ]
}
url = script.hasAttribute ? script.src : script.getAttribute( 'src', 4 );
return url;
}
版权属于:
加速器之家
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论