Javascript history.pushState似乎导致再次加载gtag.js(SPA)

Javascript history.pushState似乎导致再次加载gtag.js(SPA),javascript,google-analytics,pushstate,gtag.js,Javascript,Google Analytics,Pushstate,Gtag.js,每次我更改页面时,我的SPA都会重新加载GTAG。网上的每一篇帖子都在说我必须在代码中再次加载GTAG。因此,我收集了一个小的粗略样本来重新创建问题。我在做什么导致多重负载?我之所以注意到这一点,是因为Chrome中的Google Tag Assistant扩展指出“检测到多个安装的全局站点标签(gtag.js)”。一切似乎都进展顺利 <html> <head> <!-- Global site tag (gtag.js) - Google Analytics --

每次我更改页面时,我的SPA都会重新加载GTAG。网上的每一篇帖子都在说我必须在代码中再次加载GTAG。因此,我收集了一个小的粗略样本来重新创建问题。我在做什么导致多重负载?我之所以注意到这一点,是因为Chrome中的Google Tag Assistant扩展指出“检测到多个安装的全局站点标签(gtag.js)”。一切似乎都进展顺利

<html>
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'GA_MEASUREMENT_ID', {'send_page_view': true});
</script>

<title>Single Page</title>
<script>
function change_page_function(page_nm)
{
    var page = {'page':page_nm};
    history.pushState(page, page_nm, '/'+page_nm);
    gtag('event', 'page_view', {'page_title' : page_nm, 'page_path' : "/"+page_nm});
    //gtag('config', 'GA_MEASUREMENT_ID', {'page_path': page_nm});
}
</script>
</head>
<body>
    <a onclick="change_page_function('One');return false;" href="javascript:void(0);">Page 1</a>
    <a onclick="change_page_function('Two');return false;" href="javascript:void(0);">Page 2</a>
</body>
</html>

window.dataLayer=window.dataLayer | |[];
函数gtag(){dataLayer.push(参数);}
gtag('js',新日期());
gtag('config','GA_MEASUREMENT_ID',{'send_page_view':true});
单页
功能更改页面功能(页面)
{
var page={'page':page_nm};
历史。推送状态(第页,第页“/”+第页);
gtag('event'、'page_view'、{'page_title':page_nm、'page_path':“/”+page_nm});
//gtag('config','GA_MEASUREMENT_ID',{'page_path':page_nm});
}

在我真正的SPA中,如果我删除history.pushState,它不会加载多个gtag.js标记,并且它的行为和跟踪良好。当然要减去漂亮的网址。我还尝试回到通用分析,但也遇到了同样的问题。如果我将GTM添加到这个示例中,它也会被复制。

当与单页应用程序一起使用时,问题是Google Tag Assistant。 至少对我来说是这样。我想说,通过查看开发人员控制台中的网络选项卡,确保您没有两次加载gtag.js或js。

如果您明确解释为什么/如何在SPA中使用Google Tag Assistant是一个问题,这会更好。从这个答案中不清楚是什么导致您多次加载gtag.js。还要注意的是,如果问题实际上无法从问题中的信息中识别,那么您应该更新问题,以包含足够的信息来识别实际问题。在这个问题中,说明您使用的是哪一个SPA框架可能会有所帮助,因为从这个问题中不清楚,
在SPA中的每个导航中都会被重新加载。