В joomla php я могу использовать его $this->baseurl
для получения базового пути, но я хотел получить базовый путь в jquery.
Базовый путь может быть любым из следующих примеров:
http://www.example.com/
http://localhost/example
http://www.example.com/sub/example
Также example
может измениться.
javascript
jquery
Навин Раунияр
источник
источник
Ответы:
Это поможет вам ...
var getUrl = window.location; var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];
источник
http://localhost/myapp/what/ever/sub/folder
-> getBaseUrl ->http://localhost/myapp
:-)192.168.0.23/~sites/site/html/
вместоsite.dev
. Получение полного пути с помощью Javascript тоже не вариант, потому что сайт может иметь любое количество виртуальных подкаталогов.Я думаю, тебе подойдет
var base_url = window.location.origin; var host = window.location.host; var pathArray = window.location.pathname.split( '/' );
источник
window.location.origin
Это получит базовый URL
var baseurl = window.location.origin+window.location.pathname;
источник
Это очень старый вопрос, но вот подходы, которые я лично использую ...
Получить стандартный / базовый URL
Как уже было сказано многими, это работает в большинстве ситуаций.
var url = window.location.origin;
Получить абсолютный базовый URL
Однако этот простой подход можно использовать для удаления любых номеров портов.
var url = "http://" + location.host.split(":")[0];
Изменить: чтобы решить проблему, высказанную Джейсоном Райсом , для автоматической вставки правильного типа протокола можно использовать следующее ...
var url = window.location.protocol + "//" + location.host.split(":")[0];
Установить базовый URL
В качестве бонуса - базовый URL-адрес может быть переопределен глобально.
document.head.innerHTML = document.head.innerHTML + "<base href='" + url + "' />";
источник
document.baseURI
возвращает базовый URL-адрес, также учитывая значение в<base/>
теге https://developer.mozilla.org/en-US/docs/Web/API/Node/baseURIисточник
Это невозможно из javascript, потому что это свойство на стороне сервера. Javascript на клиенте не может знать, где установлена joomla. Лучший вариант - как-то включить значение
$this->baseurl
в javascript страницы, а затем использовать это значение (phpBaseUrl
).Затем вы можете создать URL-адрес следующим образом:
var loc = window.location; var baseUrl = loc.protocol + "//" + loc.hostname + (loc.port? ":"+loc.port : "") + "/" + phpBaseUrl;
источник
loc.host
имеет порт для URL , какhttp://localhost:8082/
этот метод будет производитьhttp://localhost:8082:8082/
,window.location.hostname
следует использовать вместо этого.Некоторое время назад была такая же проблема, моя проблема заключалась в том, что мне просто нужен базовый URL. Здесь есть много подробных опций, но чтобы обойти это, просто используйте
window.location
объект. На самом деле введите это в консоли браузера и нажмите Enter, чтобы выбрать там свои параметры. В моем случае это было просто:window.location.origin
источник
var getUrl = window.location; var baseurl = getUrl.origin; //or var baseurl = getUrl.origin + '/' +getUrl.pathname.split('/')[1];
Но нельзя сказать, что baseurl () CodeIgniter (или php joomla) вернет то же значение, поскольку можно изменить baseurl в файле .htaccess этих фреймворков.
Например :
Если у вас есть такой файл .htaccess на вашем локальном хосте:
RewriteEngine on RewriteBase /CodeIgniter/ RewriteCond $1 !^(index.php|resources|robots.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA]
$ This-> baseurl () вернет http: // localhost / CodeIgniter /
источник
самый простой способ получить базовый URL-адрес в jQuery
window.location.origin
источник
Я столкнулся с этой потребностью в нескольких проектах Joomla. Самый простой способ, который я нашел, - это добавить в мой шаблон скрытое поле ввода:
<input type="hidden" id="baseurl" name="baseurl" value="<?php echo $this->baseurl; ?>" />
Когда мне нужно значение в JavaScript:
var baseurl = document.getElementById('baseurl').value;
Не так сложно, как использование чистого JavaScript, но просто и выполняет свою работу.
источник
Вы можете легко получить это с помощью:
var currentUrl = window.location.href;
или, если вам нужен исходный URL, используйте:
var originalUrl = window.location.origin;
источник
Я бы порекомендовал всем создать базовый тег HTML в процессе разработки, а затем динамически назначать href, поэтому в процессе производства, какой бы хост ни использовал клиент, он автоматически добавлялся к нему:
<html> <title>Some page title</titile> <script type="text/javascript"> var head = document.getElementsByTagName('head')[0]; var base = document.createElement("base"); base.href = window.document.location.origin; head.appendChild(base); </script> </head> ...
Итак, если вы находитесь в localhot: 8080, вы получите доступ к каждому связанному или указанному файлу из базы, например:
http://localhost:8080/some/path/file.html
если вы находитесь на www.example.com, это будетhttp://www.example.com/some/path/file.html
Также обратите внимание, что для каждого местоположения, в котором вы находитесь, вы не должны использовать ссылки, такие как globs, в hrefs, например: Родительское местоположение
http://localhost:8080/
не вызываетhttp://localhost:8080/some/path/
.Сделайте вид, что вы ссылаетесь на все гиперссылки как на полные предложения без базового URL.
источник
Формат: имя хоста / путь / поиск
Итак, URL-адрес:
var url = window.location.hostname + window.location.pathname + window.location.hash
Для вашего случая
window.location.hostname = "stackoverflow.com" window.location.pathname ="/questions/25203124/how-to-get-base-url-with-jquery-or-javascript" window.location.hash = ""
Итак, в основном baseurl = hostname = window.location.hostname
источник
Я удивлен, что ни один из ответов не учитывает базовый URL-адрес, если он был установлен в
<base>
теге. Все текущие ответы пытаются получить имя хоста или имя сервера или первую часть адреса. Это полная логика, которая также учитывает<base>
тег (который может относиться к другому домену или протоколу):function getBaseURL(){ var elem=document.getElementsByTagName("base")[0]; if (typeof(elem) != 'undefined' && elem != null){ return elem.href; } return window.location.origin; }
Формат JQuery:
function getBaseURL(){ if ($("base").length){ return $("base").attr("href"); } return window.location.origin; }
Не вдаваясь в приведенную выше логику, сокращенное решение, которое учитывает как
<base>
тег, так иwindow.location.origin
:Js:
var a=document.createElement("a"); a.href="."; var baseURL= a.href;
JQuery:
var baseURL= $('<a href=".">')[0].href
Последнее замечание: для локального файла на вашем компьютере (не на хосте)
window.location.origin
возвращаетсяfile://
только метод сортировки, но приведенное выше решение sorthand возвращает полный правильный путь.источник
<base>
элемент.window.location.origin+"/"+window.location.pathname.split('/')[1]+"/"+page+"/"+page+"_list.jsp"
почти такой же, как ответ Жениша, но немного короче.
источник
Я был на той же сцене, и это решение работает для меня
В представлении
<?php $document = JFactory::getDocument(); $document->addScriptDeclaration('var base = \''.JURI::base().'\''); $document->addScript('components/com_name/js/filter.js'); ?>
В js-файле вы
base
получаете доступ к переменной, например, в своем сценарии:console.log(base) // will print // http://www.example.com/ // http://localhost/example // http://www.example.com/sub/example
Не помню, откуда беру эту информацию, чтобы отдать должное, если найду, то отредактирую ответ
источник
Вот короткий:
const base = new URL('/', location.href).href; console.log(base);
источник
Легко
$('<img src=>')[0].src
Создает img с пустым src-name, заставляет браузер вычислять базовый URL-адрес самостоятельно, независимо от того, есть ли у вас
/index.html
или что-то еще.источник
var getUrl = window.location; var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];
источник
Вот что-то быстрое, что также работает с
file://
URL-адресами.Я придумал этот однострочник:
[((1!=location.href.split(location.href.split("/").pop())[0].length?location.href.split(location.href.split("/").pop())[0]:(location.protocol,location.protocol+"//" + location.host+"/"))).replace(location.protocol+"//"+location.protocol+"//"+location.protocol+"://")]
источник
Вы упомянули, что это
example.com
может измениться, поэтому я подозреваю, что на самом деле вам нужен базовый URL-адрес, чтобы иметь возможность использовать нотацию относительного пути для ваших скриптов. В этом конкретном случае нет необходимости использовать скрипты - вместо этого добавьте базовый тег в свой заголовок:<head> <base href="http://www.example.com/"> </head>
Обычно я создаю ссылку через PHP.
источник
На случай, если кто-то захочет увидеть, как это разбито на очень надежную функцию
function getBaseURL() { var loc = window.location; var baseURL = loc.protocol + "//" + loc.hostname; if (typeof loc.port !== "undefined" && loc.port !== "") baseURL += ":" + loc.port; // strip leading / var pathname = loc.pathname; if (pathname.length > 0 && pathname.substr(0,1) === "/") pathname = pathname.substr(1, pathname.length - 1); var pathParts = pathname.split("/"); if (pathParts.length > 0) { for (var i = 0; i < pathParts.length; i++) { if (pathParts[i] !== "") baseURL += "/" + pathParts[i]; } } return baseURL; }
источник
Разделите и присоединитесь к URL:
const s = 'http://free-proxy.cz/en/abc' console.log(s.split('/').slice(0,3).join('/'))
источник
Поместите это в свой заголовок, чтобы он был доступен, когда вам это нужно.
var base_url = "<?php echo base_url();?>";
Вы получите
http://localhost:81/your-path-file
илиhttp://localhost/your-path-file
.источник