javascript获取URL链接和js链接中的参数

蚊子前端博客
发布于 2015-01-30 07:00
有时候我们会在javascript中使用到URL里传递过来的参数,或者我们引用了一个外部js文件的链接,而这个js文件要解析引用这个js文件里的链接。

1. js获取URL中的参数

我们经常会在javascript里使用到URL里传递过来的参数,比如进行一些判断或者新页面的跳转等;而且还有一种情况,虽然使用的情况不多见,但是也会遇到:比如在一个页面里引用了一个aaaaa.js文件的链接,这个链接里还带着一个参数referer,同时呢,aaaaa.js还要获取referer的值

COPYHTML

<script type="text/javascript" src="http://xxxx.com/aaaaa.js?referer=wenzi"></script>

网上有很多这样的例子,不过天下文章一大抄,他们的文章和样例都是一模一样的,解决不了我的问题。比如这个:

COPYJAVASCRIPT

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; }

我们能够发现代码里,解析的是*window.location.search*,可是如果我想从整个URL链接里获取到我想要的参数呢,这个就不灵了。因为正则表达式的特殊性,这里的格式只能是这样子的:'?referer=wenzi'(?必须带着)。因此若想从整个URL中解析出参数的话,那就得先把URL用 *url.split("?")* 拆成两部分,然后使用后半部分,同时拼上"?"。就可以使用这个方法了。

不过这里我们有一个简单的方法,可是网上基本没有找到,就是修改正则表达式,以达到我们的要求,上面:

COPYJAVASCRIPT

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; }

这个方法就能从完整的URL里获取参数。

2. js获取javascript链接中的参数

如果我们某个js文件是收集性质的,或者需要区别不同地方引用的js,我们就要解析这个文件里带的参数,比如上面链接中的referer。

在这里我实现的方式的前提是:script标签是阻塞加载的,而且,我们是首先获取script里的URL,然后再解析URL里的参数!

COPYJAVASCRIPT

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; }

获取到URL后再使用上面的方式解析出referer的值就行了。

标签:
阅读(1436)

公众号:

qrcode

微信公众号:前端小茶馆

公众号:

qrcode

微信公众号:前端小茶馆