JavaScript-js获取所在文件夹路径

发布于 2016-12-13 17:18:45 字数 447 浏览 1284 评论 2

用于网页
我现在想在js文件中调用一个图片,但是路径无法识别,可路径会变化,所以希望大家解答一下,如何获得js所在文件的上级目录,例如:

当前js所在文件夹1/2/3/4/甲/xx.js
现在有个文件在1/2/3/4/乙/xx.png
如何在js中调用的这个png
谢谢大家,请帮忙
附上代码

imageLoading:   'images/lightbox-ico-loading.gif',
imageBtnPrev: 'images/lightbox-btn-prev.gif',
imageBtnNext: 'images/lightbox-btn-next.gif',
imageBtnClose: 'images/lightbox-btn-close.gif',
imageBlank: 'images/lightbox-blank.gif',

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晚风撩人 2017-10-14 20:50:49

 /**
* 获取当前脚本的 URI
*
* @private
* @method currentScriptPath
* @return {String}
*/
function currentScriptPath() {
var scripts = document.getElementsByTagName( "script" );
var script = scripts[ scripts.length - 1 ];

return script.hasAttribute ?
script.src :
// hack for IE8-
// see http://msdn.microsoft.com/en-us/library/ms536429(VS.85).aspx
script.getAttribute( "src", 4 );
}

/**
* 获取指定文件所在的目录 URI
*
* @private
* @method dirname
* @param uri {String}
* @return {String}
*/
function dirname( uri ) {
return uri.match( /[^?#]*// )[0];
}

/**
* 获取指定文件的绝对路径
*
* @private
* @method specifyFile
* @param relative_uri {String} 指定文件的相对路径
* @param base_uri {String} 基于的 uri
* @return {String}
*/
function specifyFile( relative_uri, base_uri ) {
var dotPath = relative_uri.match( /(.{1,2}/)+/ )[0];
var dotSegments = getSegments( dotPath );

if ( base_uri === undefined ) {
base_uri = dirname( currentScriptPath() );
}

var segements = getSegments( base_uri );

if ( dotPath !== "./" ) {
for ( var i = 0; i < dotSegments.length; i++ ) {
segements.pop();
}
}

return segements.join("/") + "/" + relative_uri.slice( relative_uri.indexOf(dotPath) + dotPath.length );
}

/**
* 获取 URI 片段
*
* @private
* @method getSegments
* @param uri {String} uri
* @return {Array}
*/
function getSegments( uri ) {
var segements = uri.split( "/" );

segements.pop();

return segements;
}

定义好函数之后,只要——

 specifyFile( "图片文件相对于当前 js 文件的路径" );

注意:该代码中获取当前脚本文件路径的方式,只在运行到那个 js 文件时才有效!如果是定义成全局函数在其他地方调用的话,会获取错误!

想挽留 2017-07-01 19:03:30

//假设文件名为load.js
var filename = "load.js";

// 根据相对路径获取绝对路径
function getPath(relativePath, absolutePath){
var reg = new RegExp("\.\./","g");
var upCount = 0; // 相对路径中返回上层的次数。
var m = relativePath.match(reg);
if(m) upCount = m.length;
var lastIndex = absolutePath.length-1;
for(var i=0;i<=upCount;i++){
lastIndex = absolutePath.lastIndexOf("/",lastIndex);
}
return absolutePath.substr(0,lastIndex+1) + relativePath.replace(reg,"");
}

// 获取当前文件绝对路径
function getAbsolutePath() {
var scripts = document.getElementsByTagName('script');
var script = null;
var len = scripts.length;

for(var i = 0; i < scripts.length; i++) {
if(scripts[i].src.indexOf(filename) != -1) {
script = scripts[i];
break;
}
}
if(script) {
var src = script.src;
// 不是绝对路径需要修正
if(src.indexOf("http://") != 0 && src.indexOf("/") != 0){
var url = location.href;
var index = url.indexOf("?");
if(index != -1){
url = url.substring(0, index-1);
}
src = getPath(src,url);
}
return src;
}
return null;
}

window.onload = function() {
var path = getAbsolutePath()
alert("当前的js文件路径:"+path);
var dirpath = path.substr(0, path.lastIndexOf("/"));
alert("上一级路径:"+getPath("../", dirpath));
alert("相对路径 ../images/lightbox-ico-loading.gif 路径:"+getPath("../images/lightbox-ico-loading.gif", dirpath));
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文