Javascript: обнаружение переключения между средами - PullRequest
0 голосов
/ 05 октября 2018

В настоящее время я работаю в компании со следующими средами:

  • local.example.com
  • staging.example.com
  • утвержденный тест.example.com
  • www.example.com
  • * и несколько других, которые я не могу перечислить

Теперь из-под моего контроля буквальнотысячи страниц на каждом из этих серверов (они огромны), и существует множество абсолютно определенных ссылок.И даже если бы я мог исправить их в коде при следующем обновлении кода, это вернуло бы их обратно.

Итак, я пытаюсь создать расширение Chrome, которое позволит мне определять, когда ссылка выводит меня из среды.Потому что я сыт по горло beign переключаться между ними, не осознавая.

На данный момент у меня есть это:

function currentURL() {
        var result = {};
        var regexParse = new RegExp('([a-z\-0-9]{2,63})\.([a-z\.]{2,5})$');
        var urlParts = regexParse.exec(window.location.hostname);
        result.domain = urlParts[1];
        result.type = urlParts[2];
        result.subdomain = window.location.hostname.replace(result.domain + '.' + result.type, '').slice(0, -1);;
        return result.subdomain;
}
function nextURL(url) {

        var result = {};
        var regexParse = new RegExp('([a-z\-0-9]{2,63})\.([a-z\.]{2,5})$');
        var urlParts = regexParse.exec(url);
        result.domain = urlParts[1];
        result.type = urlParts[2];
        result.subdomain = window.location.hostname.replace(result.domain + '.' + result.type, '').slice(0, -1);;
        return result.subdomain;
}

, и я получаю атрибут href URL-адреса и сравниваю с текущим URL-адресом.

Моя проблема в этом.Иногда переданный URL-адрес ссылки просто:

/ next-page

или, возможно, исходящая ссылка:

//newexample.com

Итак, как вы можете видеть, существует несколько вариантов того, каким может быть следующий URL.

JavaScript не мои сильные стороны, поэтому я спрашиваю вас, ребята: как лучше всего убедиться, что ссылка, которую я нажимаю, не является внешней.

1 Ответ

0 голосов
/ 05 октября 2018

и я получаю атрибут href URL и сравниваю с текущим URL ...

Не используйте атрибут href , используйтеhref свойство .Свойство href является полностью разрешенным URL-адресом (когда URL-адрес может быть полностью разрешен, как правило).

Так что, если у вас есть ссылка на HTMLAnchorElement (объект для элемента a), например link, используйте:

var url = link.href;

not

var url = link.getAttribute("href");

Вот пример различия:

var link = document.querySelector("a[href]");
console.log("property:  " + link.href);
console.log("attribute: " + link.getAttribute("href"));
Stack Snippets run in the domain <code>https://stacksnippets.net</code>. <a href="//stackoverflow.com">This link</a> is a protocol-relative link to Stack Overflow.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...