Подтвердить что ты не робот

Как получить базовый url с jquery или javascript?

В joomla php я могу использовать $this->baseurl для получения базового пути, но я хотел получить базовый путь в jquery.

Базовый путь может быть любым из следующих примеров:

http://www.example.com/
http://localhost/example
http://www.example.com/sub/example

Также может измениться example.

4b9b3361

Ответ 1

Этот поможет вам...

var getUrl = window.location;
var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];

Ответ 2

Я думаю, это будет хорошо для вас

var base_url = window.location.origin;

var host = window.location.host;

var pathArray = window.location.pathname.split( '/' );

Ответ 3

Это получит базовый url

var baseurl = window.location.origin+window.location.pathname;

Ответ 4

Это невозможно из javascript, потому что это свойство на стороне сервера. Javascript на клиенте не может знать, где установлен Joomla. Лучший вариант - как-то включить значение $this->baseurl в javascript страницы, а затем использовать это значение (phpBaseUrl).

Затем вы можете создать URL-адрес следующим образом:

var loc = window.location;
var baseUrl = loc.protocol + "//" + loc.hostname + (loc.port? ":"+loc.port : "") + "/" + phpBaseUrl;

Ответ 5

Я столкнулся с этой необходимостью в нескольких проектах Joomla. Самый простой способ, которым я нашел обращение, - добавить скрытое поле ввода в мой шаблон:

<input type="hidden" id="baseurl" name="baseurl" value="<?php echo $this->baseurl; ?>" />

Когда мне нужно значение в JavaScript:

var baseurl = document.getElementById('baseurl').value;

Не так интересно, как использовать чистый JavaScript, но просто и выполняет свою работу.

Ответ 6

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/

Ответ 7

У меня была такая же проблема некоторое время назад, я просто нуждался в базовом URL. Здесь много подробных опций, но чтобы обойти это, просто используйте объект window.location. На самом деле введите это в консоли браузера и нажмите Enter, чтобы выбрать там свои параметры. Ну для моего случая это было просто:

window.location.origin

Ответ 8

Я бы порекомендовал всем создавать базовый тег 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/ not http://localhost:8080/some/path/.

Сделайте вид, что вы ссылаетесь на все гиперссылки как на полные предложения без базового URL.

Ответ 9

Формат имени хоста/пути/поиска

Таким образом, 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

Ответ 10

window.location.origin+"/"+window.location.pathname.split('/')[1]+"/"+page+"/"+page+"_list.jsp"

почти так же, как ответ Джениша, но немного короче.

Ответ 11

Самый простой способ получить базовый URL в JQuery

window.location.origin

Ответ 12

Вот что-то быстрое, что также работает с file:// URLs.

Я придумал эту строку:

[((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+"://")]

Ответ 13

Я был только на той же сцене, и это решение работает для меня

В представлении

<?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

Я не помню, где я беру эту информацию, чтобы дать кредит, если я найду ее, я отредактирую ответ

Ответ 14

var getUrl = window.location;
var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];

Ответ 15

Вы упомянули, что example.com может измениться, поэтому я подозреваю, что на самом деле вам нужен базовый url, чтобы иметь возможность использовать относительную запись пути для ваших скриптов. В этом конкретном случае нет необходимости использовать скрипты - вместо этого добавьте базовый тег в свой заголовок:

<head>
  <base href="http://www.example.com/">
</head>

Я обычно генерирую ссылку через PHP.

Ответ 16

В случае, если кто-то хотел бы видеть это разбитым на очень надежную функцию

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

Ответ 17

Легко

$('<img src=>')[0].src

Генерирует img с пустым src-name заставляет браузер вычислять base-url самостоятельно, независимо от того, есть ли у вас /index.html или что-то еще.

Ответ 18

Это очень старый вопрос, но вот подходы, которые я лично использую...

Получить стандартный/базовый URL

Как уже говорили многие, это работает для большинства ситуаций.

var url = window.location.origin;


Получить абсолютную базовую ссылку

Тем не менее, этот простой подход может быть использован для удаления любых номеров портов.

var url = "http://" + location.host.split(":")[0];


Установить базовый URL

В качестве бонуса - базовый URL может быть переопределен глобально.

document.head.innerHTML = document.head.innerHTML + "<base href='" + url + "' />";

Ответ 19

Поместите это в свой заголовок, чтобы он был доступен, когда вам это нужно.

var base_url = "<?php echo base_url();?>";

Вы получите http://localhost:81/your-path-file или http://localhost/your-path-file.