Есть ли способ узнать, включена ли часть домена в document.referrer? - PullRequest
1 голос
/ 31 марта 2020

Я настраиваю модал для нашего сайта, и мы хотим, чтобы он появлялся только в том случае, если пользователь заходит на любую из наших страниц с внешней страницы (т. Е. С Google на нашу страницу). Модал должен отображаться на всех страницах, поэтому я настроил его в нашем заголовке, так как это один из двух разделов, которые являются постоянными для всего нашего сайта (другой - нижний колонтитул). У меня есть модал для определенных страниц, использующий условное обозначение document.referrer, но код настроен так, что мне бы пришлось буквально печатать каждый другой URL на нашем сайте (более 500 страниц), чтобы это работало.

Таким образом, вопрос заключается в том, можно ли указать целевой URL-адрес домена в условном выражении, где , если домен включен в URL-адрес предыдущей страницы (реферера), тогда не отображать модальный ?

Вот пример модала, который у меня сейчас есть:

const domains = ["http://website.com/*"];

            if (domains.includes(document.referrer)) {
              console.log("Don't Show Modal - from any park page", document.referrer);
            } else {
              console.log("Show Modal - From other Page", document.referrer);

              $( window ).on('load', function() {
                 console.log("closure modal firing");
                 $('#closureModal').modal({
                 backdrop: 'static',
                 keyboard: false,
                 show: true
                 });
              });

            }

#closureModal подключен к модальному HTML коду.

1 Ответ

0 голосов
/ 31 марта 2020

Вы можете использовать интерфейс URL для выполнения этого сравнения. Вам придется использовать имена хостов в вашем массиве domains (т. Е. Без протокола или пути) или обрабатывать записи также в domains - URL, но в любом случае это должно быть достаточно надежно для того, что вам нужно. делать.

const domains = ["stackoverflow.com"];
const referrer_hostname = new URL(document.referrer).hostname;

if (domains.includes(referrer_hostname)) {
  console.log("Don't Show Modal - from any park page", document.referrer);
} else {
  console.log("Show Modal - From other Page", document.referrer);
  /* modal manipulation */
}
...