您的位置:首页 > Web前端 > JavaScript

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

2015-06-26 00:35 549 查看
原文: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,'');
}


这些内容都是借鉴的前面那篇博文的,只不过做了一个细化!再次感谢原文作者!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: