码迷,mamicode.com
首页 > 编程语言 > 详细

javascript中外部js文件取得自身完整路径得办法

时间:2015-06-26 06:49:25      阅读:363      评论:0      收藏:0      [点我收藏+]

标签:

原文:javascript中外部js文件取得自身完整路径得办法

有时候我们需要引入一个外部js文件,这个js文件又需要用到自己的路径或者是所在的目录,别问怎么又这么变态的需求,开发做久了各种奇葩需求也就有了!

有人第一时间想到的是location.href,可是哥哥,那个引用页面的路径啊。比如a.html:

<html>
<script src="/b/c.js"></script>
</html>

这样的话我们用location.href获取到的值是a.html文件本身的路径,并不是我们需要的c.js的路径。

那怎么办?

我先开始想到了一个方法,就是通过js的文件名去匹配,比如我写一个插件叫做dragondean.js,那么我可以将引用页(a.html)中所有的script标签获取到,然后通过匹配src属性中是否含有dragondean来获得我们需要的js文件路径。

但是这样一来就有问题了:

1.我们的插件dragondean.js在使用的时候不能被更名。

2.一个插件的js文件重复引用会导致错误

这种方式总是没有一种踏实的感觉...

后来.....我看了一片文章:http://blog.sina.com.cn/s/blog_715fa5c00100pwrj.html

里面提到的思路用到了浏览器对网页加载顺序的一个技巧,经过测试确实可行!

原理就是网页文档在解析的时候一边加载一边解析,当解析到script的时候先下载src中的内容并解析或者解析script中间的内容,然后再往下解析。当解析到当前script的时候我们可以获取已经加载的所有script标签,最后一个就是我们需要得到的这个了。

用到的方法代码如下:

获取自身的完整路径:

function getMySrc(){
    var scriptSrc = document.getElementsByTagName(‘script‘)[document.getElementsByTagName(‘script‘).length -1].src;
    return scriptSrc;
}

 

获得自身的文件名:

function getMyScriptName(){
    var scriptSrc = document.getElementsByTagName(‘script‘)[document.getElementsByTagName(‘script‘).length -1].src;
    var jsName = scriptSrc.split(‘/‘)[scriptSrc.split(‘/‘).length-1];
    return jsName;
}

 

获得自身所在的目录路径:

function getMyPath(){
    var scriptSrc = document.getElementsByTagName(‘script‘)[document.getElementsByTagName(‘script‘).length -1].src;
    var jsName = scriptSrc.split(‘/‘)[scriptSrc.split(‘/‘).length-1];
    return scriptSrc.replace(jsName,‘‘);
}

 

这些内容都是借鉴的前面那篇博文的,只不过做了一个细化!再次感谢原文作者!

 

javascript中外部js文件取得自身完整路径得办法

标签:

原文地址:http://www.cnblogs.com/lonelyxmas/p/4601324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!