2010-06-30 59 views
49

Tôi đang cố gắng lấy thư mục hiện tại của tệp trong Javascript để tôi có thể sử dụng nó để kích hoạt chức năng jquery khác nhau cho từng phần của trang web của tôi.Làm cách nào để lấy tên thư mục hiện tại trong Javascript?

if (current_directory) = "example" { 
var activeicon = ".icon_one span"; 
}; 
elseif (current_directory) = "example2" { 
var activeicon = ".icon_two span"; 
}; 
else { 
var activeicon = ".icon_default span"; 
}; 

$(activeicon).show(); 
... 

Bất kỳ ý tưởng nào?

Trả lời

19

Bạn có thể sử dụng window.location.pathname.split('/');

Điều đó sẽ tạo ra một mảng với tất cả các mục giữa/'s

8

này sẽ làm việc cho đường dẫn thực tế trên hệ thống tệp nếu bạn không nói chuỗi URL.

var path = document.location.pathname; 
var directory = path.substring(path.indexOf('/'), path.lastIndexOf('/')); 
+0

var path = document.location.pathname; var dir = path.substring (path.indexOf ('/'), path.lastIndexOf ('/')); – gtzinos

65

window.location.pathname sẽ đưa bạn thư mục, cũng như tên trang. Sau đó, bạn có thể sử dụng .substring() để nhận thư mục:

var loc = window.location.pathname; 
var dir = loc.substring(0, loc.lastIndexOf('/')); 

Hy vọng điều này sẽ hữu ích!

+0

trang joomla của tôi tạo url giống như sau: http: //localhost/sub/sub/sub/index.php/ali-mm-d#tab2 (trong số những thứ lạ khác) do đó phương pháp này tạo KHÔNG phải thư mục, nhưng thay vào đó: http: //localhost/sub/sub/sub/index.php – dsdsdsdsd

+0

đây là giải pháp cho tôi, cảm ơn. – DeyaEldeen

9

Đối với cả hai/và \:

window.location.pathname.replace(/[^\\\/]*$/, ''); 

Để trở về mà không có dấu gạch chéo, làm:

window.location.pathname.replace(/[\\\/][^\\\/]*$/, ''); 
+0

Điều này làm việc trong IE <9, trong khi các câu trả lời sử dụng .lastIndexOf thì không. 1 vì lý do này. – thunderblaster

2

Nếu bạn muốn URL đầy đủ ví dụ http://website/basedirectory/workingdirectory/ sử dụng:

var location = window.location.href; 
var directoryPath = location.substring(0, location.lastIndexOf("/")+1); 

Nếu bạn muốn đường dẫn cục bộ không có miền, ví dụ: /basedirectory/workingdirectory/ sử dụng:

var location = window.location.pathname; 
var directoryPath = location.substring(0, location.lastIndexOf("/")+1); 

Trong trường hợp bạn không cần dấu gạch chéo ở cuối, loại bỏ các +1 sau location.lastIndexOf("/")+1.

Nếu bạn chỉ muốn tên thư mục hiện tại, nơi tập lệnh đang chạy, ví dụ: workingdirectory sử dụng:

var location = window.location.pathname; 
var path = location.substring(0, location.lastIndexOf("/")); 
var directoryName = path.substring(path.lastIndexOf("/")+1); 
+0

vị trí khiến Google Chrome tải lại trang, thay đổi tên biến thành một cái gì đó khác như location1 – mparkuk

2

này một-liner hoạt động:

var currentDirectory = window.location.pathname.split('/').slice(0, -1).join('/') 
Các vấn đề liên quan