在页面上显示未知的隐藏字段值

时间:2015-09-21 10:19:12

标签: javascript html function google-analytics

我目前正在使用脚本从Google Analytics获取有关访问者的数据,并将其传递给表单上的隐藏输入字段。我使用了本文中的脚本:http://bit.ly/1PiPxrp

如果您在此处查看一个有效的示例(http://codepen.io/saltmktg/pen/meERex - 该功能从第91行开始),您可以点击"显示GA信息"按钮并查看每个数据的警报。 (你不会看到真正的信息,因为Analytics脚本链接到一个不同的帐户,即不是JSFiddle。)然而,我的问题是我想在实际页面上显示这些数据 - 没有访问者点击"显示GA信息"按钮。我希望他们在点击页面时能够正确查看数据。

现在populateHiddenFields功能只会在您点击&#34;显示GA信息&#34;时填充隐藏的字段。按钮。我尝试了<body onload="populateHiddenFields(this);window.onload = populateHiddenFields之类的内容 - 但是我无法在页面的其他位置使用该功能(除了与实际表单绑定)。

如果我能提供更多信息或示例,请告诉我。再一次,我只想在页面上显示访问者的Google Analytics跟踪信息。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

它完美无缺,所以我想你没有在论证中传递形式。您可以在onload或DOM ready事件中生成(如您所愿):

http://codepen.io/anon/pen/ojLwNW

 <body onload="populateHiddenFields(document.forms[0])"> 

我制作document.forms[0],因为它是页面中唯一的表单。您可以按ID或表单名称传递对象。

祝你好运

答案 1 :(得分:0)

所以,这里是您的代码的更新,以使其工作:

http://codepen.io/anon/pen/VvjWYz

所有值都会显示在您的提醒中。

如果您想在屏幕上显示它们,请将隐藏的输入设为=&#39; text&#39;代替。

原始代码的基本问题是populateHiddenFields需要一个参数来引用表单,并且调用onload并不会传递该引用。

感谢javascript - Detect if Google Analytics is loaded yet?我引用的一些代码,以确保首先加载Google Analytics。

我的补充:

function checkIfAnalyticsLoaded(f) {
  //See https://stackoverflow.com/a/1954977/1913396
  if (window._gat && window._gat._getTracker) {
    populateHiddenFields(f);
  } else if (window.urchinTracker) {
    populateHiddenFields(f);
  } else {
    // Retry. Probably want to cap the total number of times you call this.
    setTimeout(500, checkIfAnalyticsLoaded());
  }
}

function startOnce() {

  //See https://stackoverflow.com/a/1954977/1913396
  if(window._gaq) 
    _gaq.push(['_trackPageview']);
  //end

  frm = frm || document.getElementById("contactform");
  //or
  //frm = frm || document.getElementsByName('contactform')[0];

  checkIfAnalyticsLoaded(frm);                           
}

var frm = null;

我在表单中添加了一个id属性。

然后,在身体的底部:

  //document.addEventListener('DOMContentLoaded', startOnce, false);
  (function(){ setTimeout(startOnce, 50); })();

使用其中之一。