不要说用location.href,那是文档的路径。
从script中去匹配?那又如何获知你现在的js的文件名?手工填?那样兼容性太差。
当js中调用另外一个js的时候,一般来说,知道肯定是两个js之间的相对位置关系,而不会是另外那个js和文档的位置关系,因此要调用必须要知道js的自身路径。
其实有个很简单的方法,document没载入完也可以使用elementsByTagName,但是那时的文档的是不完整,有多不完整?对!就是不完整到只有到引用的那个script为止。下面的都尚未载入。于是只要找到script的最后一个的src就是调用js的时候使用的地址。并且浏览器很乖地把这个相对地址转换成绝对地址返回来。
贴代码。
从script中去匹配?那又如何获知你现在的js的文件名?手工填?那样兼容性太差。
当js中调用另外一个js的时候,一般来说,知道肯定是两个js之间的相对位置关系,而不会是另外那个js和文档的位置关系,因此要调用必须要知道js的自身路径。
其实有个很简单的方法,document没载入完也可以使用elementsByTagName,但是那时的文档的是不完整,有多不完整?对!就是不完整到只有到引用的那个script为止。下面的都尚未载入。于是只要找到script的最后一个的src就是调用js的时候使用的地址。并且浏览器很乖地把这个相对地址转换成绝对地址返回来。
贴代码。
function baseUrl(){
var scriptSrc = document.getElementsByTagName('script')[document.getElementsByTagName('script').length -1].src;
var jsName = scriptSrc.split('/')[scriptSrc.split('/').length-1];
return scriptSrc.replace(jsName,'');
}
原文地址:http://blog.sina.com.cn/s/blog_715fa5c00100pwrj.html