我正在尝试通过Google跟踪代码管理器使用Google Analytics中的事件跟踪成功的表单提交。我当前的设置成功跟踪用户提交表单的时间。但是,即使表单提交无效且未提交(即用户未填写所有必填字段,单击提交按钮,表单尝试验证,但返回到用户有错误而不是提交)。我在我的监听器上检查了检查验证功能,如果表单提交被阻止,理论上应该保持标签不被触发,因此它不是明显的错误。
相关表单是使用Sitecore的营销人员Web表单创建的。我的同事们的WFFM表格也有类似的未解决问题。
此特定表单用于处理内容,以便只有填写表单的用户才能访问内容资源。例如,如果我访问www.mydomain.com/resource,我将被重定向到www.mydomain.com/form,如果我正确填写所有信息并提交,我将被重定向到我所拥有的资源最初试图在www.mydomain.com/resource上查看。
这是我的设置:
标记1
标记2
理论上,如果表单未成功提交,则“检查验证”复选框应阻止标记触发,但在此表单的情况下则不会。无论表单是否提交,标签都会触发。
道歉,我无法链接到表单,就像客户端和安全性一样。
答案 0 :(得分:2)
我们能够通过Sitecore论坛找到我们问题的答案,但我想将其传递给您以获益。
来自Sitecore:
Web窗体模块提供双级验证,1个客户端验证,2个服务器验证。
默认情况下,对必填字段验证程序禁用客户端验证。因此,当您按提交时,表单将发布到服务器,并返回验证错误。这可能是Google Analytics将其视为表单提交的原因。
这解决了我们所有基于文本的字段的问题。它没有解决表单上的一个复选框的问题。我已经跟进了sitecore,但我想我会在此期间更新。
只剩下复选框,我还可以使用一个宏并添加到我在谷歌标记管理器中的原始触发规则,以便在未选中该复选框时不会触发该事件。
我创建了一个名为Radio Button Checked的自定义Javascript宏(不确定它是最好的,但它有效),并为我原来的表单提交规则添加了一个新条件:{{Radio Button Checked}}等于true
宏:
function() {
var radioName = "radioButtonName";
try {
var buttons = document.getElementsByName(radioName);
for (var i = 0;i < buttons.length;i++){
if(buttons[i].checked) {
return true;
}
}
} catch(e) {}
return false;
}
来自Sitecore:
目前CheckBox字段类型没有客户端验证。我将其注册为WFFM模块的错误。一旦修好,我会立刻通知你。
他们也让我知道这不会在近期修复,所以我需要继续使用我的GTM解决方法来填写复选框字段。
答案 1 :(得分:0)
Google Chrome插件“Tag Assistant”在调试这些问题时非常有用。它将向您显示给定页面上存在哪些(如果有)结构或实施问题可能会妨碍您的预期跟踪行为(https://chrome.google.com/webstore/detail/tag-assistant-by-google/kejbdjndbnbjgmefkgdddjlbokphdefk?hl=en)
我的直觉是这个问题与WFFM没有特别的关系,但可能是由于在页面上实现了Tag Manager代码。我似乎记得当一般使用标签管理器包含代码在使用WebForms时被转储到自动生成的.NET标记内时,会出现这样的问题。谷歌的文档(https://developers.google.com/tag-manager/quickstart)说要在开始标记之后立即加上它,我记得我的问题是跟踪表格提交。
这一切都来自记忆,所以我可能错了,但这是另一回事。
祝你好运!