13

If I have my application hosted in a directory. The application path is the directory name.

For example

http://192.168.1.2/AppName/some.html

How to get using javascript the application name like in my case /AppName.

document.domain is returning the hostname and document.URL is returning the whole Url.

EDIT

Thr app path could be more complex, like /one/two/thre/

5 Answers 5

15
window.location.pathname.substr(0, window.location.pathname.lastIndexOf('/'))
Sign up to request clarification or add additional context in comments.

1 Comment

This worked well for my scenario after I changed the lastIndexOf to "/swagger" not a perfect solution, but the best one for my case and simple. Thank you for sharing!
10

This will give you a result but would have to be modified if you have more levels (see commented code).

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);

2 Comments

That will work fine, as long as the page is not served from a default document: http://192.168.1.2/AppName/
You're right. I've updated the code. However it only covers '.html' and would have to be modified if you have a different extension. Maybe having it look for '.' would be enough for most people?
2

This should do the 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());

Comments

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

This is an expression... just copy-paste it to the place where you need that string. Or put it in a variable, so that you can use it multiple times.

3 Comments

Returns an error. 'pathName' should be all lowercase. It also doesn't satisfy the app path based on update to original question (otherwise a very smart solution).
Yes, of course ... lowercase. However, it does not throw an error, but returns undefined.
I updated the code. Now it is in form of an function expression that executes and returns the desired string value...
0

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

If your path is something like /myApp/...

or

function applicationContextPath() {
    if (location.pathname.split('/').length > 1)
        return "/" + location.pathname.split('/')[1];
    else
        return "/";
}
alert(applicationContextPath);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.