JS中获取contextPath的方法

以前定义想在JS中获取contextPath路径的方法大概也就是在JSP页面中写上这么一段代码:
<script type="text/javascript">
var $ctx='<%=request.getContextPath()%>';
</script>

然后这个$ctx参数才能在其他JS文件中获取到。

但这对于笔者这种代码强迫症“患者”来说,无疑是比较痛苦的,因为它要写一个额外的script标签。
笔者在浏览一些网站时,突然看到有很多JS引用后面携带了参数,于是折腾了一会儿,下面就提供一种另类的解决方案:
<script src="mine.js?ctx=<%=request.getContextPath()%>" type="text/javascript"></script>

然后在mine.js中开头写上这么一句话:
var js=document.scripts;
var url=js[js.length-1].src;
var $ctx=getQueryString(url,'ctx');
function getQueryString(url,name){
     var reg = new RegExp("(\\?|&)"+ name +"=([^&]*)(&|$)");
     var r = url.substr(1).match(reg);
     if(r!=null)return unescape(r[2]); return null;
}

这里面一个非常重要的一点在于,如果页面中有很多js引用,而mine.js无论插在开头还是末尾亦或中间,var url=js[js.length-1].src;这一行代码都能获取到mine.js自身的url。
这其中的原因大致就是JS从上到下解释执行模式所带来的一个小福利了。

你可能感兴趣的:(JavaScript)