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从上到下解释执行模式所带来的一个小福利了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值