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

Javascript 在页面上显示未知的隐藏字段值,javascript,html,function,google-analytics,Javascript,Html,Function,Google Analytics,我目前正在使用一个脚本从Google Analytics获取关于访问者的数据,并将其传递到表单上的隐藏输入字段。我正在使用本文中的脚本: 如果您在这里查看一个工作示例(-该函数从第91行开始),您可以单击“Show GA Info”(显示GA信息)按钮,查看每段数据的警报。(你不会看到真实的信息,因为分析脚本链接到不同的帐户,即不是JSFIDLE。)然而,我的问题是,我想在实际页面上显示这些数据,而不需要访问者点击“Show GA info”按钮。我想让他们在点击页面时立即看到数据 现在,pop

我目前正在使用一个脚本从Google Analytics获取关于访问者的数据,并将其传递到表单上的隐藏输入字段。我正在使用本文中的脚本:

如果您在这里查看一个工作示例(-该函数从第91行开始),您可以单击“Show GA Info”(显示GA信息)按钮,查看每段数据的警报。(你不会看到真实的信息,因为分析脚本链接到不同的帐户,即不是JSFIDLE。)然而,我的问题是,我想在实际页面上显示这些数据,而不需要访问者点击“Show GA info”按钮。我想让他们在点击页面时立即看到数据


现在,
populateHiddenFields
功能仅在您单击“显示GA信息”按钮时填充隐藏字段。我尝试了类似于
的方法,它工作得非常完美,因此我认为您没有在参数中传递表单。您可以在onload或DOM就绪事件中(根据需要)生成:


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


祝你好运

它工作得很好,所以我想你没有通过参数中的表单。您可以在onload或DOM就绪事件中(根据需要)生成:


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


祝你好运

下面是代码的更新,以使其正常工作:

所有值都显示在警报中

如果您想在屏幕上显示它们,请将隐藏的输入改为type='text'

原始代码的基本问题是populateHiddenFields期望一个参数引用表单,而调用它onload不会传递该引用

多亏了我引用的一些代码,以确保谷歌分析首先完成加载

我的补充:

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); })();

使用任意一种方法。

因此,以下是代码的更新,以使其正常工作:

所有值都显示在警报中

如果您想在屏幕上显示它们,请将隐藏的输入改为type='text'

原始代码的基本问题是populateHiddenFields期望一个参数引用表单,而调用它onload不会传递该引用

多亏了我引用的一些代码,以确保谷歌分析首先完成加载

我的补充:

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); })();

两者都可以使用。

好的,非常感谢,这真的很有帮助!我将
添加到页面中,其中一个Google Analytics值现在已填充。最后一个问题:我想将动态生成的Google Analytics值(在本例中为“f.source.value”-来自第93行)附加到页面上iframe src的末尾(iframe src从第138行开始)。理想情况下,它将显示为一个参数。例如:
http://fakesite.com/test?=analyticsSource
我尝试了许多解决方案,但似乎无法将值放在iframe src的末尾。有什么想法/建议吗?下面是更新的示例:再次感谢您的帮助!如果要更新iframe的url:
document.getElementById(“testIframe”).src=document.getElementById(“testIframe”).src+“&+f.source.value将源代码添加到URL的末尾非常感谢Marcos-您帮了我很大的忙!我真的很欣赏聪明、简单的解决方案和快速的响应。再次感谢!我会的,但不幸的是我还没有获得足够的学分。好的,非常感谢,这真的很有帮助!我将
添加到页面中,其中一个Google Analytics值现在已填充。最后一个问题:我想将动态生成的Google Analytics值(在本例中为“f.source.value”-来自第93行)附加到页面上iframe src的末尾(iframe src从第138行开始)。理想情况下,它将显示为一个参数。例如:
http://fakesite.com/test?=analyticsSource
我尝试了许多解决方案,但似乎无法将值放在iframe src的末尾。有什么想法/建议吗?下面是更新的示例:再次感谢您的帮助!如果要更新iframe的url:
document.getElementById(“testIframe”).src=document.getElementById(“testIframe”).src+“&+f.source.value将源代码添加到URL的末尾非常感谢Marcos-您帮了我很大的忙!我真的很欣赏聪明、简单的解决方案和快速的响应。再次感谢!我会的,但不幸的是我还没有获得足够的信用。谢谢你的运气,我很感激!谢谢你的运气,我很感激!