getBaseURL () вызов функции JavaScript в href = "" - PullRequest
15 голосов
/ 30 мая 2011

Я вызываю основанный URL через javascript на html-странице и хочу добавить базовый URL для вызова ссылки

например.

<a href="getBaseURL()/filepath/index.html">Page</a>

JavaScript выглядит следующим образом:

function getBaseURL() {
    var url = location.href;  // entire url including querystring - also: window.location.href;
    var baseURL = url.substring(0, url.indexOf('/', 14));

    if (baseURL.indexOf('http://localhost') != -1) {
        // Base Url for localhost
        var url = location.href;  // window.location.href;
        var pathname = location.pathname;  // window.location.pathname;
        var index1 = url.indexOf(pathname);
        var index2 = url.indexOf("/", index1 + 1);
        var baseLocalUrl = url.substr(0, index2);

        return baseLocalUrl + "/";
    }
    else {
        // Root Url for domain name
        return baseURL + "/";
    }

}

EDIT

Это просто для получения любого базового URL из рассматриваемого домена. Кроме того, я получил этот код из учебного пособия, поэтому любые предложения, которые потребуют меньшего количества обработки, будут отличными, спасибо

ВТОРОЕ РЕДАКТИРОВАНИЕ

Привет. Всем спасибо за ваши ответы, однако я собираюсь вызвать функцию к тегу html, как в <a href="getURL()/filepath/file.html></a>. Вот в чем проблема, я не уверен, как это сделать

Ответы [ 3 ]

30 голосов
/ 30 мая 2011
function getBaseURL () {
   return location.protocol + "//" + location.hostname + 
      (location.port && ":" + location.port) + "/";
}

Редактировать: Адрес точки Майка Самуэля на нестандартных портах.

5 голосов
/ 20 июня 2013

Общее решение, позволяющее использовать <base> (или нет) - дальнейшим улучшением было бы удаление baseDocument из baseURL с использованием некоторого вида регулярных выражений.

function getBaseURL () {
    var baseURL = "";
    var baseDocument = "index.html";

    if (document.getElementsByTagName('base').length > 0) {
        baseURL = document.getElementsByTagName('base')[0].href.replace(baseDocument, "");
    } else {
        baseURL = location.protocol + "//" + location.hostname + (location.port && ":" + location.port) + "/";
    }

    return baseURL;
}
0 голосов
/ 17 декабря 2014

Я имею дело с той же проблемой, и не столько получаю базовый URL (как показали эти ответы), но вызываю эту функцию javascript из элемента и затем добавляю относительный путь.Используя ответ @Christian Sanchez и другую информацию, которую я нашел, это вариант, использующий щелчок элемента:

JAVASCRIPT:

<script type="text/javascript">
    function getBaseURL(loc) {
        return location.protocol + "//" + location.hostname +
           (location.port && ":" + location.port) + "/" + loc;
    }
</script>

HTML:

<a href="filepath/index.html" onclick="getBaseURL(this.href);">TEST LINK</a>

Fiddle здесь: http://jsfiddle.net/62g2bkyh/ (наведите курсор на ссылку, чтобы увидеть URL в fiddle - который показывает базовый URL-адрес iframe).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...