Jquery 如何在Squarespace表单提交中跟踪UTM数据

Jquery 如何在Squarespace表单提交中跟踪UTM数据,jquery,google-analytics,squarespace,Jquery,Google Analytics,Squarespace,我见过很多关于更改参数值的最简单方法的问题,但对于如何更改参数本身却一无所知 例如: example.com/?utm\U活动=1&utm\U来源=2 将成为: example.com/?SQF_活动=1和SQF_来源=2 我已经尝试过修改它,但我真的不明白它是如何工作的: <script> var url = $('.mylink').attr('href') url = url.replace('utm_', 'sqf_') $('.mylink').attr('href', u

我见过很多关于更改参数值的最简单方法的问题,但对于如何更改参数本身却一无所知

例如:

example.com/?utm\U活动=1&utm\U来源=2

将成为:

example.com/?SQF_活动=1和SQF_来源=2

我已经尝试过修改它,但我真的不明白它是如何工作的:

<script>
var url = $('.mylink').attr('href')
url = url.replace('utm_', 'sqf_')
$('.mylink').attr('href', url)
</script>

var url=$('.mylink').attr('href'))
url=url.replace('utm_uu','sqf_uu')
$('.mylink').attr('href',url)

如果你对我为什么这么做感到好奇,只接受以“SQF_”开头的URL参数,而Google Analytics只接受“utm_”参数。进行此更改可以让我们在有人使用表单与我们联系时传递链接属性。

您提供的代码将获取包含mylink类的锚的链接(href)。 使用该链接,您可以将第一次出现的“utm_”替换为“sqf_”。 然后用新链接替换锚点的链接(href)

为了改变所有出现的“utm\ug”,我使用了一个正则表达式
/utm\ug

我添加了一个片段来澄清:

$(文档).ready(函数(){
//获取类为mylink的元素的当前href
var url=$('.mylink').attr('href'))
//用sqf替换所有出现的utm_uu_
url=url.replace(/utm\ug,'sqf\ug'))
//将锚上的旧href替换为新href
$('.mylink').attr('href',url)
});


> P>一个要考虑的问题是,页面加载后通过JavaScript更改查询参数可能对表单字段没有影响;页面已经加载,Squarespace自己的代码也已经运行

然而,还有一些选择

选项1

不要更改URL中的查询参数,而是直接将URL中的值插入到隐藏的Squarespace表单字段中。要做到这一点,请确保Squarespace中的隐藏字段的命名方式与UTM参数完全对应,唯一的区别是表单字段名以“SQF_”开头,并且都是大写的。然后,在下面添加:


window.Squarespace.onInitialize(Y,function(){
/**
*获取URL参数
*资料来源:https://css-tricks.com/snippets/javascript/get-url-variables/
*@param{String}url该url
*@return{Object}URL参数
*/
var getParams=函数(url){
var params={};
var parser=document.createElement('a');
parser.href=url;
var query=parser.search.substring(1);
var vars=query.split('&');

对于(var i=0;iWaw),感谢您非常详细和彻底的回答。选项1代码非常适合传递参数,添加GA事件也为我们提供了最好的两个方面。非常感谢Brandon,感谢您在这里花费的时间和精力。
<script>
window.Squarespace.onInitialize(Y, function() {
  /**
   * Get the URL parameters
   * source: https://css-tricks.com/snippets/javascript/get-url-variables/
   * @param  {String} url The URL
   * @return {Object}     The URL parameters
   */
  var getParams = function (url) {
    var params = {};
    var parser = document.createElement('a');
    parser.href = url;
    var query = parser.search.substring(1);
    var vars = query.split('&');
    for (var i=0; i<vars.length; i++) {
      var pair = vars[i].split('=');
      params[pair[0]] = decodeURIComponent(pair[1]);
    }
    return params;
  };

  /**
   * Get UTM parameters from the current URL, insert them into correspondingly-named Squarespace form hidden fields.
   */
  var params = getParams(window.location.href);
  var param;
  var paramMatch;
  var paramBase;
  var formFields;
  var i;
  for (param in params) {
    paramMatch = param.match(/^utm_(.*)/i);
    if (!paramMatch) {
        continue;
    }
    paramBase = paramMatch[1];
    formFields = document.getElementsByName("SQF_" + paramBase.toUpperCase());
    i = formFields.length;
    while (i--) {
      if (formFields[i]) {
        formFields[i].value = params[param]; 
      }
    }
  }
});
</script>
<script>gtag("event", "Submit Form", {event_category:"Contact", event_label:"Contact Page Body"})</script>
<script>ga("send", "event", "Contact", "Submit Form", "Contact Page Body");</script>
<script>window.location.replace("/form-submitted");</script>