【问题标题】:Pass Query String to All Pages将查询字符串传递给所有页面
【发布时间】:2020-11-06 19:02:15
【问题描述】:

我需要一点帮助。我是 javascript 的初学者,在 Google 跟踪代码管理器中遇到了一些代码,旨在将查询字符串传递给所有页面。它工作得很好,除了在网站的一个特定页面上。

在那个页面上,我有一堆用户可以滚动浏览的引语。每当有人点击按钮阅读轮播上的下一个报价时,页面就会刷新(这是我们不希望的)。

有人可以帮我调整此代码,以使页面在特定用例中不会刷新吗?

我认为最大的问题是轮播被<a> </a>标签包裹。

<script>
    for (var n = 0; n < document.getElementsByTagName('a').length; n++) {
        var link = document.getElementsByTagName('a')[n].href;
      if (link.includes('?')) {
        document.getElementsByTagName('a')[n].href = link.concat('&' + {{Query String}});
      }
      else {
        document.getElementsByTagName('a')[n].href = link.concat('?' + {{Query String}});
      }
    }
</script>

【问题讨论】:

  • 阅读下一个报价按钮的网址是什么?
  • @imvain2 没有读取下一个报价按钮的 URL。这是我在检查页面时看到的代码:&lt;a class="lp-element lp-pom-button" id="lp-pom-button-1389"&gt;&lt;span class="label"&gt;&lt;/span&gt;&lt;/a&gt;

标签: javascript query-string google-tag-manager


【解决方案1】:

您可以使用querySelectorAll 仅对带有href 参数的链接进行排序。

qstring = "x=1";
links = document.querySelectorAll("a[href]");

links.forEach(function(el){
  var link = el.href;
  if (link.includes('?')) {
    el.href = link.concat('&' + qstring);
   } else if (link[0] != "#") { {
   el.href = link.concat('?' + qstring);
  }
});
<a href="https://test.com/?xx">Test.com</a>
<a href="https://test.com/">Test.com</a>
<a href="https://test.com">Test.com</a>
<a name="a">Test.com</a>

【讨论】:

  • 我是否必须添加所有hrefs 的列表才能使其正常工作?对于我网站的每个页面来说,这似乎需要大量工作。
  • @Avenues_Q,只需使用我提供的 javascript,唯一的变化就是更改查询字符串。我的示例中的链接是为了显示代码正在运行。
  • 成功了!我遇到了一个小问题,查询字符串被附加到 URL 上两次,所以它看起来像 www.test.com/?gclid=123&amp;utm_source=Google&amp;gclid=123&amp;utm_source=Google。关于为什么会这样的任何想法?
  • @Avenues_Q,你还在运行旧代码吗?
  • 不,我不是。我删除了它。我注意到这也往往会破坏页面上的锚标签。我有一个链接到页面顶部表单的按钮,当我使用此代码单击它时,锚标记会中断并且不执行任何操作。 #top-of-page.
猜你喜欢
  • 1970-01-01
  • 2012-04-14
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 2013-08-18
相关资源
最近更新 更多