I'm trying to get the current directory of the file in Javascript so I can use that to trigger a different jquery function for each section of my site.
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();
...
Any ideas?
This question is related to
javascript
jquery
If you want the complete URL e.g. website.com/workingdirectory/
use:
window.location.hostname+window.location.pathname.replace(/[^\\\/]*$/, '');
This will work for actual paths on the file system if you're not talking the URL string.
var path = document.location.pathname;
var directory = path.substring(path.indexOf('/'), path.lastIndexOf('/'));
window.location.pathname
In Node.js, you could use:
console.log('Current directory: ' + process.cwd());
For both / and \:
window.location.pathname.replace(/[^\\\/]*$/, '');
To return without the trailing slash, do:
window.location.pathname.replace(/[\\\/][^\\\/]*$/, '');
complete URL
If you want the complete URL e.g. http://website/basedirectory/workingdirectory/
use:
var location = window.location.href;
var directoryPath = location.substring(0, location.lastIndexOf("/")+1);
local path
If you want the local path without domain e.g. /basedirectory/workingdirectory/
use:
var location = window.location.pathname;
var directoryPath = location.substring(0, location.lastIndexOf("/")+1);
In case you don't need the slash at the end, remove the +1
after location.lastIndexOf("/")+1
.
directory name
If you only want the current directory name, where the script is running in, e.g. workingdirectory
use:
var location = window.location.pathname;
var path = location.substring(0, location.lastIndexOf("/"));
var directoryName = path.substring(path.lastIndexOf("/")+1);
Assuming you are talking about the current URL, you can parse out part of the URL using window.location
.
See: http://java-programming.suite101.com/article.cfm/how_to_get_url_parts_in_javascript
window.location.pathname will get you the directory, as well as the page name. You could then use .substring() to get the directory:
var loc = window.location.pathname;
var dir = loc.substring(0, loc.lastIndexOf('/'));
Hope this helps!
This one-liner works:
var currentDirectory = window.location.pathname.split('/').slice(0, -1).join('/')
An interesting approach to get the dirname
of the current URL is to make use of your browser's built-in path resolution. You can do that by:
.
, i.e. the current directoryHTMLAnchorElement
interface of the link to get the resolved URL or path equivalent to .
.Here's one line of code that does just that:
Object.assign(document.createElement('a'), {href: '.'}).pathname
In contrast to some of the other solutions presented here, the result of this method will always have a trailing slash. E.g. running it on this page will yield /questions/3151436/
, running it on https://stackoverflow.com/
will yield /
.
It's also easy to get the full URL instead of the path. Just read the href
property instead of pathname
.
Finally, this approach should work in even the most ancient browsers if you don't use Object.assign
:
function getCurrentDir () {
var link = document.createElement('a');
link.href = '.';
return link.pathname;
}
You can use window.location.pathname.split('/');
That will produce an array with all of the items between the /'s
Source: Stackoverflow.com