目前在我的网站中,我使用了HTML5的pushState()
和popState
来提高链接速度。然而,这并没有真正改变URL,并且看起来会影响并搞乱Google Analytics的代码。(不显示URL更改) 是否有可能的解决方案?谢谢。
目前在我的网站中,我使用了HTML5的pushState()
和popState
来提高链接速度。然而,这并没有真正改变URL,并且看起来会影响并搞乱Google Analytics的代码。(不显示URL更改) 是否有可能的解决方案?谢谢。
如果你正在使用更新的analytics.js
API,Google的文档要求使用以下代码来触发事件:
ga('send', 'pageview', '/some-page');
如果你正在使用旧版的 ga.js
API,David Walsh建议使用_gaq.push
方法来处理 AJAX 网站:
_gaq.push(['_trackPageview', '/some-page']);
ga('set', 'page', '/new-page.html'); ga('send', 'pageview');
。 - Geradlus_RU我知道这是一个老问题,但由于这个问题在谷歌中是关于跟踪pushState()在Google Analytics中的第一个结果,而且所有答案都是错误的,所以我决定回答它。
在其他答案中,他们提到直接使用 ga('send' ..... ) 但这是错误的方法。
首先,您必须“设置”参数,然后使用“发送”进行跟踪。
如果您只想更新网址,请使用以下代码
// set new url
ga('set', 'page', '/new-page');
// send it for tracking
ga('send', 'pageview');
如果您想更新URL和标题,请将标题参数添加到其中。
// set new url and title
ga('set', {
page: '/new-page',
title: 'New Page'
});
// send it for tracking
ga('send', 'pageview');
ga('send', 'page', '/new-page');
是“错误的”。该来源建议使用 'send'
,但随后指出,如果您发送其他命中(例如事件或社交命中),则应使用 'set'
。 - JamesGoogle Analytics有一个新的跟踪代码片段,因此其他答案可能对gtag无效。
这是默认的跟踪代码。尽管我们尝试在每个URL更改时运行它,但它只会运行一次。
gtag('config', 'GA_TRACKING_ID');
但是通过添加page_path
参数,我们可以手动运行GA。
gtag('config', 'GA_TRACKING_ID', {'page_path': '/new-page.html'});
我们可以制作类似于这样的东西。
var origin = window.location.protocol + '//' + window.location.host;
var pathname = window.location.href.substr(origin.length);
gtag('config', 'GA_TRACKING_ID', {'page_path': pathname});
现在您可以使用 Google的autotrack.js
,这是一个增强analytics.js
的脚本。
它包括一个插件,自动跟踪单页应用程序的URL更改。
您只需要在html中包含脚本和以下行:
ga('require', 'urlChangeTracker');
截至2013年9月,
Google Analytics有一个新的JavaScript API。
在包含了Google的新的"analytics.js"异步片段之后,使用发送页面视图命令来跟踪页面:
ga('send','pageview');
在你的pushState混乱之后,使用这个发送页面视图命令来跟踪你的异步导航。根据Google关于使用Analytics.js进行页面跟踪的文档,发送页面视图命令将神奇地读取和跟踪pushState给出的新位置,因为在调用发送页面视图命令时,默认情况下会使用以下值(尽管您可以指定它们):
var locationToTrack = window.location.protocol+'//'
+window.location.hostname
+window.location.pathname
+window.location.search;
var titleToTrack = document.title;
var pathToTrack = location.pathname+location.search;
注意,Google的标准分析代码片段包括一个初始发送页面视图命令。
我已经按照上述方式在我的网站上实现了Google Analytics跟踪,但似乎没有成功跟踪任何pushState页面视图。
我将尝试在发送页面视图命令中明确指定位置、标题和页面名称,并查看GA是否正确跟踪。
除非我忘记了,否则我会发布结果。
ga('send', 'pageview')
在GA上没有注册页面浏览量。window.ga.getAll()[0].set('page', location);
window.ga.getAll()[0].send('pageview');
我可以使用history.pushState
更改URL后进行操作。
我在使用 history.pushState 后,也遇到了 ga('send','pageview'); 的问题。
解决方法很简单,只需要将 URL 显式地指定即可。 ga('send','pageview','/my-url')