在ASP.NET中,获得文件的物理路径可以使用server.mapPath()方法得到,
而在JavaScript中则是没有这个方法的,这里给出JavaScript如何获得文件的路径:
function serverMapPath(fileName){
var syspath = location.href;
syspath = syspath.toLowerCase(); //把路径名称转换成小写
myPosition = syspath.lastIndexOf("/"); // 获取文件路径中的最后一个"/"
syspath = syspath.substring(0,parseInt(myPosition)+1); // 使用substring函数 截取"/"之前的字符串,就得到当前目录的路径
syspath = syspath.replace("file:///",""); //这里要把file:///替换为空,否则会报错
syspath = syspath.replace(new RegExp("%20","gm")," "); // 如果文件名中含有空格,则要还原空格,替换所有的 %20 为 " "
syspath = syspath + fileName;
return syspath.toString();
}
大家知道在JavaScript中有个 location.href ,但是这个属性有时候获得的文件路径不一定正确。
//////////////////////////////////////////////////////////////////////////////
demo http://www.cnall.org/lab/js/locArray.html
源码:
function getCurrentDirectory(){
var locHref = location.href;
var locArray = locHref.split("/");
/**这里测试locArray效果**
for(x in locArray){
document.write("locArray[");
document.write(x+"]: ");
document.write(locArray[x]+"<br />");
}
**/
delete locArray[locArray.length-1];
var dirTxt = locArray.join("/");
return dirTxt;
}
document.write(getCurrentDirectory());
讲解:
location.href,当前的URL
var locArray = locHref.split("/");,把当前的URL变成Array,效果如下:
locArray[0]: http:
locArray[1]:
locArray[2]: localhost
locArray[3]: cnall.org
locArray[4]: lab
locArray[5]: js
locArray[6]: locArray.html
注意locArray[1]这个地方的内容,这个是因为处理"http://"中"//"的结果
delete locArray[locArray.length-1];,使用delete来删除Array中的一个项目
Delete杀伤力很大,还可以用于删除一个Object的Property,具体内容请查阅这里:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Operators:Special_Operators:delete_Operator
var dirTxt = locArray.join("/");,利用join来粘合
join经常和split配合使用,请多多练习
/////////////////////////////////////////////
var GetPath:function(){
var a=window.location.href.substr(7+document.domain.length);
var A=a.split("/");
a=a.substr(0,a.length-A[A.length-1].length);
return a;
}
////////////////////////////////////////////
function serverMapPath(fileName){
var syspath = location.href;
syspath = syspath.toLowerCase(); //把路径名称转换成小写
myPosition = syspath.lastIndexOf("/"); // 获取文件路径中的最后一个"/"
syspath = syspath.substring(0,parseInt(myPosition)+1); // 使用substring函数 截取"/"之前的字符串,就得到当前目录的路径
syspath = syspath.replace("file:///",""); //这里要把file:///替换为空,否则会报错
syspath = syspath.replace(new RegExp("%20","gm")," "); // 如果文件名中含有空格,则要还原空格,替换所有的 %20 为 " "
syspath = syspath + fileName;
return syspath.toString();
}