有没有办法询问document.referrer中是否包含域的一部分?

我正在为我们的网站设置一个模式,我们希望它仅在用户从外部页面(即从google到我们的页面)进入我们的任何页面时才显示。模态应该显示在所有页面上,所以我将其设置在我们的页眉中,因为那是整个站点中不变的两个部分之一(另一个是页脚)。我有条件的使用document.referrer进入某些页面的模式,但是设​​置了代码,我必须逐字键入我们网站中的每个其他URL(超过500个页面),以便工作。 / p>

所以问题是,有没有办法我可以有条件地定位域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代码。

zx_key 回答:有没有办法询问document.referrer中是否包含域的一部分?

您可以利用URL interface进行比较。您必须在domains数组中使用主机名(即,没有协议或路径),或者也要处理domainsURL中的条目,但是无论哪种方式,它都应该非常健壮满足您的需要。

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 */
}

本文链接:https://www.f2er.com/2541780.html

大家都在问