sarsnake
sarsnake

Reputation: 27733

Getting the website root in Javascript

say I'm developing a website.com. I need to get the root (website.com) dynamically (for dev and production). Is there a way to do it in JS?

I am using asp.net mvc 3 on the server.

Upvotes: 2

Views: 8236

Answers (3)

Xandrios93
Xandrios93

Reputation: 2315

I created a function to get real root:

function root() {
        var scripts = document.getElementsByTagName( 'script' ),
            script = scripts[scripts.length - 1],
            path = script.getAttribute( 'src' ).split( '/' ),
            pathname = location.pathname.split( '/' ),
            notSame = false,
            same = 0;

        for ( var i in path ) {
            if ( !notSame ) {
                if ( path[i] == pathname[i] ) {
                    same++;
                } else {
                    notSame = true;
                }
            }
        }
        return location.origin + pathname.slice( 0, same ).join( '/' );
    }

call this function once when the js-file is loaded.
to make it work, you MUST include it as js-file.

Usage:

var basepath = root();

here are some examples:

location.host: 'http://test.com'
location.path: '/myapp/controller/action/id'

this will result in:

http://test.com/myapp

Upvotes: 2

Joost Verdaasdonk
Joost Verdaasdonk

Reputation: 327

See: How to extract the hostname portion of a URL in JavaScript

Quote from the link:

You could concatenate the location protocol and the host: var root = location.protocol + '//' + location.host; For a url, let say 'https://stackoverflow.com/questions', it will return 'http://stackoverflow.com'

Upvotes: 3

Audun Larsen
Audun Larsen

Reputation: 976

Yes: window.location.hostname

Upvotes: 6

Related Questions