在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://"中"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();
}