google-tag-manager - 将 GCLID 参数转换为 Squarespace 隐藏字段
问题描述
我正在尝试从 URL 中提取 GCLID 参数(示例:https ://www.example.com?gclid=CjwKCAjwiMj2BRBFEiwAYfTbCjQ- LBlWhBymAH4piPD3FalPCbl24kE7VQ4JtNJ4Jfj8XPE )并将其插入到 Squarespace 隐藏字段中。
理想情况下,我想通过 GTM 脚本执行此操作,但我也可以通过站点范围的页脚代码注入将其直接添加到 Squarespace。所有 Squarespace 隐藏字段都以前缀“SQF”开头(在我的例子中,隐藏字段是:SQF_GCLID
我一直在玩这样的东西:
`<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(/^gclid(.*)/i);
if (!paramMatch) {
continue;
}
paramBase = paramMatch[1];
formFields = document.getElementsByName("SQF_GCLID");
i = formFields.length;
while (i--) {
if (formFields[i]) {
formFields[i].value = params[param];
}
}
}
});
</script>`
这是基于在此处找到的代码。
没有其他参数可以传递(只是 gclid)。
解决方案
我不完全确定为什么我以我的方式编写该代码(您引用了该代码),但是这个更简单的版本应该可以满足您的需要,并且对于 utm 以外的参数更灵活,如您的情况:
<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 paramField;
for (param in params) {
paramField = document.getElementsByName("SQF_" + param.toUpperCase())[0];
if (paramField) {
paramField.value = params[param];
}
}
});
</script>
推荐阅读
- python - Python Twitter 数据另存为 cvs
- ios - 你如何使用 UIEdgeInsets?
- stripe-payments - 使用 Stripe 我如何存储客户的卡详细信息,然后可以手动向他们收费......?
- flutter - 当用户在 google_maps_flutter 中选择权限时捕获事件
- java - 在发布时使用 Spring Boot JPA 在 H2 数据库中插入数据
- node.js - 刮问题使我的旅行航班数据使用cheerio
- javascript - 为什么 DialogContent 在包含带有间距的嵌套网格时会添加滚动条而不是进一步扩展?
- python - Python DataFrame:根据最小和最大范围添加两列?
- reactjs - 有没有办法在不使用 Yeoman 生成器的情况下将 React Web 应用程序作为插件嵌入 Outlook 中
- reactjs - StencilJS 向 React 发出事件