Jquery 如何在Squarespace表单提交中跟踪UTM数据
我见过很多关于更改参数值的最简单方法的问题,但对于如何更改参数本身却一无所知 例如: example.com/?utm\U活动=1&utm\U来源=2 将成为: example.com/?SQF_活动=1和SQF_来源=2 我已经尝试过修改它,但我真的不明白它是如何工作的: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
<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>