Вопрос:
скажем, я разрабатываю сайт.com. Мне нужно получить root (site.com) динамически (для dev и production). Есть ли способ сделать это в JS?
Я использую asp.net mvc 3 на сервере.
Лучший ответ:
Да: window.location.hostname
Ответ №1
См. Раздел: Как извлечь часть имени хоста URL-адреса в JavaScript
Цитата из ссылки:
Вы можете объединить протокол местоположения и хост: var root = location.protocol + ‘//’ + location.host; Для URL-адреса, скажем, ” qaru.site/questions/… “, он вернет ” /qaru.site/… “,
Ответ №2
Я создал функцию для получения реального корня:
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( ‘/’ ); }
вызов этой функции один раз при загрузке js файла.
чтобы он работал, вы ДОЛЖНЫ включать его как js файл.
Применение:
var basepath = root();
Вот некоторые примеры:
location.host: ‘http://test.com’ location.path: ‘/myapp/controller/action/id’
это приведет к: