我已经阅读了几篇SO帖子以及docs和api。我的理解是,当dataLayer.push({'event': 'trackEvent'});
一个事件对象进入它时,.push()
全局对象的行为应该像Array一样并且会增加。根据截图here。
我的dataLayer对象不会像这样增长。它存在于窗口上,我可以运行
ArithmeticException
没有错误,除了它不会增加dataLayer的大小。
除了数组增长以及我还能告诉public void actionPerformed(ActionEvent ev)
{
String numText = numFld.getText();
String denText = denFld.getText();
if(ev.getActionCommand().equals("Build Fraction"))
{
numFld.setText("");
denFld.setText("");
int numerator = Integer.parseInt(numText);
int denominator = Integer.parseInt(denText);
try {
System.out.println(numerator);
}
catch(NumberFormatException ex) {
JOptionPane.showMessageDialog(pnlOne, "Numerator cannot be empty");
System.out.println(ex.getMessage());
numFld.requestFocus();
}
try {
System.out.println(denominator);
}
catch(NumberFormatException ex) {
JOptionPane.showMessageDialog(pnlOne, "Denominator cannot be empty");
System.out.println(ex.getMessage());
denFld.requestFocus();
}
try {
System.out.println(numerator/denominator);
}
catch(ArithmeticException ex) {
JOptionPane.showMessageDialog(pnlOne, "Denominator cannot be 0");
System.out.println(ex.getMessage());
denFld.requestFocus();
}
if (denominator !=0 && numText!="" && denText!="") {
Fraction fraction = new Fraction(numerator,denominator);
fractions.add(fraction);
fractionFld.append(fraction.getNum() + "/" + fraction.getDen() + "\n\r");
}
}
是否有效?
浏览器在检测到事件时是否应执行xhr请求?
GTM脚本在将它们发送到谷歌之前是否基于GTM设置(标签/触发器)执行客户端逻辑?即事件没有推动,因为他们没有通过验证。
如果我在localhost上测试这个是否重要?
我该如何解决这个问题?
答案 0 :(得分:0)
数据层是一个数组,所以是的,它应该像一个数组。单个项目是对象。
它不应该执行xhr请求,因为GTM捆绑并直接下载到您的页面,因此不需要xhr。
GTM事件本身永远不会发送给Google(它们仅用于触发标记,然后可能会向Google发送数据。它们不会自动映射到Google Analytics事件)。它们未经过验证,GTM只修改了push方法,以查看参数是否包含关键字“event”(此时GTM脚本的内部状态将使用新值更新)。
在加载GTM之后,您的数据层似乎发生了某些事情(您有启动事件,但没有gtm.dom或gtm.load),因此您可能需要检查是否在GTM代码段之后重新声明了datalayer。但是要实际调试问题,如果我们能够看到你如何嵌入GTM并设置你的数据层(如果有机会我们可以浏览你的页面,或者显示相同问题的示例页面,那将会有所帮助)非常有帮助)。
答案 1 :(得分:0)