我正在使用gtag.js脚本,而我正在使用SPA,所以我在路线更改时手动发送浏览量。
我的问题是初始网页浏览有效,但后续网页浏览没有。我可以在window.dataLayer
中看到正确的数据,但由于某些原因,它们不会发送给GA。
我不明白如何将dataLayer
中注入的数据发送到GA,它们只是存储在一个数组中,gtag.js中是否有某种监听器监视window.dataLayer
?似乎不太可能。 (如果是这样,如何显示此日志?)
这是实施(反应)
layout.js
<script
async
src={`https://www.googletagmanager.com/gtag/js?id=${GA_TRACKING_ID}`}
/>
<script
dangerouslySetInnerHTML={{
__html: initializeAsHTML()
}}
/>
utils的/ gtag.js
// https://developers.google.com/analytics/devguides/collection/gtagjs/pages
export const pageview = ({ url = window.location.href, path = window.location.pathname, title = window.document.title }) => {
console.log('GA - pageview', url, path, title);
window.gtag('config', `${GA_TRACKING_ID}`, {
page_location: url,
page_path: path,
page_title: title,
});
};
// https://developers.google.com/analytics/devguides/collection/gtagjs/events
export const event = ({ action, category, label, value }) => {
console.log('GA - event', action, category, label, value);
window.gtag('event', action, {
event_category: category,
event_label: label,
value: value,
});
};
export const initializeAsHTML = () => {
return `
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', '${GA_TRACKING_ID}', {
page_location: window.location.href,
page_path: window.location.pathname,
page_title: window.document.title
});
`;
};
路由器
Router.onRouteChangeComplete = () => {
if (isBrowser() && typeof window.gtag !== undefined) {
pageview({});
}
};
当我手动调用gtag时,我也无法在GA实时概述中显示任何内容。
gtag('config', 'UA-xxx, {
page_location: 'http://xxx',
page_path: '/fake',
page_title: 'FAKE'
});
很难弄清楚出了什么问题。我自己的日志告诉我,我正在调用window.gtag
函数(并且dataLayer正确填充),但我不知道之后会发生什么。
在Google Analytics实时概述页面上,我只在重新加载页面时看到pageview
事件,但在浏览我的应用时却看不到。
我安装了Chrome插件Google Events,但也没有显示任何内容。
我也禁用了我的广告拦截器。