9

我在我的 chrome 扩展页面中添加了这个 gtm 代码(由内容脚本和 iframe 注入)

// <!-- Google Tag Manager -->
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','owDataLayer','GTM-XXXXXXX');
// <!-- End Google Tag Manager -->

我确认成功加载了 gtm.js 文件。

Request URL:https://www.googletagmanager.com/gtm.js?id=GTM-XXXXXX&l=dataLayer
Request Method:GET
Status Code:200  (from disk cache)

我有一个按钮,下面的代码已附加到按钮的单击事件

dataLayer.push({
    'event': 'tab click',
    'user id' : 123,
    'description' : "Social"
});

当我单击按钮 dataLayer.push 成功但没有发送到https://www.google-analytics.com/r/collect? 开发人员工具栏窗口的“网络”选项卡中的任何活动时。

有人可以帮我解决这个问题吗?提前致谢!

编辑: 添加标签设置的屏幕截图。 在此处输入图像描述

4

1 回答 1

11

这个周末我花了很多时间阅读 gtm 和 Google chrome 扩展。最后我得到了 Simo Ahava 的这篇博文。他用解决方案讨论了完全相同的问题。感谢西莫。

这是他博客文章的部分粘贴。我们必须添加checkProtocolTask : false到每个 gtm 标记,以便从 Google Chrome 扩展程序发送跟踪它们。

添加checkProtocolTask : false到要设置的字段

向下滚动到要设置的字段,然后添加一个新字段:

Field Name: checkProtocolTask
Value: false

通常,Google Analytics 要求对 GA 的请求来自 HTTP 或 HTTPS。如果请求来自其他任何地方,则取消该过程。通过将名为 checkProtocolTask​​ 的任务设置为 false,我们可以防止这种检查发生,因为扩展使用自定义 chrome-extension:// 协议。

截屏:

在此处输入图像描述

发布此内容以便其他人在遇到相同问题时发现此答案很有帮助。谢谢!

于 2017-08-08T05:51:49.093 回答