2010-09-09 30 views
7

Nếu tôi có ứng dụng của mình được lưu trữ trong một thư mục. Đường dẫn ứng dụng là tên thư mục.Cách nhận đường dẫn Ứng dụng bằng cách sử dụng javascript

Ví dụ

http://192.168.1.2/AppName/some.html

Làm thế nào để có được sử dụng javascript tên ứng dụng như thế nào trong trường hợp của tôi /AppName.

document.domain đang trả về tên máy chủ và document.URL đang trả về toàn bộ Url.

EDIT

Thr con đường ứng dụng có thể phức tạp hơn, như /one/two/thre/

Trả lời

8

Điều này sẽ cho bạn kết quả nhưng sẽ phải được sửa đổi nếu bạn có nhiều cấp độ hơn (xem mã nhận xét).

var path = location.pathname.split('/'); 
if (path[path.length-1].indexOf('.html')>-1) { 
    path.length = path.length - 1; 
} 
var app = path[path.length-2]; // if you just want 'three' 
// var app = path.join('/'); // if you want the whole thing like '/one/two/three' 
console.log(app); 
+0

Điều đó sẽ hoạt động tốt, miễn là trang không được phân phối từ tài liệu mặc định: 'http://192.168.1.2/AppName/ ' –

+1

Bạn nói đúng. Tôi đã cập nhật mã. Tuy nhiên, nó chỉ bao gồm '.html' và sẽ phải được sửa đổi nếu bạn có phần mở rộng khác. Có thể tìm nó '.' sẽ là đủ cho hầu hết mọi người? – donohoe

2
(function(p) { 
    var s = p.split("/").reverse(); 
    s.splice(0, 1); 
    return s.reverse().join("/"); 
})(location.pathname) 

Đây là một biểu hiện ... chỉ cần sao chép-dán nó vào nơi mà bạn cần chuỗi đó. Hoặc đặt nó vào một biến, để bạn có thể sử dụng nó nhiều lần.

+0

Trả về lỗi. 'pathName' phải là chữ thường. Nó cũng không đáp ứng đường dẫn ứng dụng dựa trên cập nhật cho câu hỏi ban đầu (nếu không một giải pháp rất thông minh). – donohoe

+0

Có, tất nhiên ... chữ thường. Tuy nhiên, nó không ném một lỗi, nhưng trả về không xác định. –

+0

Tôi đã cập nhật mã. Bây giờ nó ở dạng biểu thức hàm thực hiện và trả về giá trị chuỗi mong muốn ... –

2

này nên làm các trick

function getAppPath() { 
    var pathArray = location.pathname.split('/'); 
    var appPath = "/"; 
    for(var i=1; i<pathArray.length-1; i++) { 
     appPath += pathArray[i] + "/"; 
    } 
    return appPath; 
} 

alert(getAppPath()); 
9
window.location.pathname.substr(0, window.location.pathname.lastIndexOf('/')) 
+0

Up-vote cho việc cung cấp một lớp lót –

+0

Điều này làm việc tốt cho kịch bản của tôi sau khi tôi thay đổi lastIndexOf thành "/ swagger" không phải là giải pháp hoàn hảo, nhưng giải pháp tốt nhất cho trường hợp của tôi và đơn giản. Cảm ơn bạn đã chia sẻ! –

0

alert("/"+location.pathname.split('/')[1]);

Nếu đường dẫn của bạn là một cái gì đó giống như/MyApp/...

hoặc

function applicationContextPath() { 
    if (location.pathname.split('/').length > 1) 
     return "/" + location.pathname.split('/')[1]; 
    else 
     return "/"; 
} 
alert(applicationContextPath); 
Các vấn đề liên quan