我一直在寻找这个答案的高低,我完全傻眼了.
我正在使用GA在我的Android应用中实现简单的点击和页面跟踪,通过GTM运行.所有我的"屏幕"都可以在GA中实时显示,但我无法让"事件"出现.
实际上我可以,但行为似乎非常离奇.如果我不包含"标签"和"值",我可以看到事件出现.但是,如果我添加它们(无论是常量还是数据层变量),所有事件都会停止.我已经确认了我想要的变量"Label"和"Value"正在通过,因为我创建了一个容器,其中这些值为"Category"和"Action",并且可以实时看到它们.
这让我觉得应用程序端实现完全没问题,但我的GTM中的标签存在问题.(显然不是触发器,因为它在预期时也起作用).
理想情况下,我想做这样的事情(变量是数据层变量):
但这不起作用.我看不到任何事件.
android google-analytics google-tag-manager google-analytics-firebase
我在网站上实施Google跟踪代码管理器时遇到了一些问题.我有一个Google代码,当我在我的网站上试用它时,会产生很多 javascript冲突.
因此,我尝试将代码放在一个单独的文件中,以便逐步执行并观察不同脚本的行为.
所以这里是我非常简单的HTML页面:
<!DOCTYPE html>
<html>
<head>
<title>Titre</title>
</head>
<body>
<!-- Google Tag Manager -->
<noscript>
<iframe src="http://www.googletagmanager.com/ns.html?id=GTM-XXXXXX" height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<script type="text/javascript">
dataLayer = [{'uid':'12'}];
(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='//www.googletagmanager.com/gtm.js?id='+i+dl;
f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');
</script>
<!-- End Google Tag Manager -->
hello
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这个页面,在JS控制台中返回一个错误:
Uncaught ReferenceError: jQuery is not defined
Run Code Online (Sandbox Code Playgroud)
嗯,这是出乎意料的,jQuery在这里要做什么?我甚至没有在我的身体标签上声明它,Google是否需要jQuery?
所以这很奇怪,第二件事,当我在浏览器上加载后查看生成的HTML页面时:
<body>
... Long stuff here
<script type="text/javascript" id="" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
... some other stuff here
</body>
Run Code Online (Sandbox Code Playgroud)
这是什么魔法?为什么Google会在页面底部添加一个jquery,为什么我的控制台会向我显示jQuery错误?
非常感谢任何类型的信息,我完全失去了...祝你有愉快的一天!
如何获取危险内的脚本SetInnerHTML得到执行?
class Page extends Component {
render() {
return (
<script
dangerouslySetInnerHTML={{ __html: `
console.log('hello world');
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'viewCart'
});
` }}
/>
);
}
}
Run Code Online (Sandbox Code Playgroud)
我无法console.log('hello world')执行 有人可以帮忙吗?谢谢
我们正计划从GA SDK迁移到Firebase SDK。在GA SDK中,有一些选项可用于检索Google Analytics(分析)客户端ID(https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#cid)。这是至关重要的,因为我们将此价值转移到了WebView(在应用程序内),从而使客户可以跨本机/ webview进行跟踪。
有人知道如何在Firebase Analytics SDK(iOS和Android)中检索此客户端ID吗?
谢谢!
google-analytics google-tag-manager google-analytics-sdk firebase-analytics
这可能看起来像一个简单的问题,但似乎没有任何我能找到的答案.
我正在编写一个onClick事件处理程序,只需dataLayer.push()在单击锚点时调用.
是dataLayer.push()同步操作吗?
是否肯定会发送谷歌的GET请求,即使浏览器已经卸载了请求的页面,因为链接被跟踪?
一些浏览器显示连接被取消,一些显示它成功.
我的问题是,如果计算机速度慢,是否可以在发送请求之前卸载页面?
这就是为什么我假设谷歌开始使用该eventCallback属性在链接被跟踪后重定向用户.例如
https://developers.google.com/tag-manager/enhanced-ecommerce#product-clicks
此源代码不包含单击处理程序,但暗示该onClick事件应停止传播并eventCallback设置该函数document.location.
但是,一旦取消该活动,其所有信息都已消失.
这(在我看来)只是错误的做法.例如(CTRL或COMMAND)+ Click在浏览器上打开一个新选项卡.除非onClick事件处理程序允许prorogation继续,否则这将不起作用.
依赖eventCallback也意味着如果google scrips没有加载其中的一个原因(但仍然不太可能),你的链接不起作用.而且你的网站坏了.
因此,这为onClick事件处理程序提供了正确的方法,以允许事件传播并返回true.
这也意味着dataLayer.push()在发送GET请求之后需要返回以使其中的任何一个正常工作.
代码示例:注意:您将在混合环境中获得混合结果.
<a href="/somewhere-else">Link</a>
$(document).on('click', 'a', function(event) {
// Is dataLayer.push() guaranteed to fire a GET ?
// data set externally
dataLayer.push(data);
return true;
Run Code Online (Sandbox Code Playgroud)
});
是否有人可以保证GET请求将被解雇到谷歌服务器?
谷歌开发者忘记了什么吗?
编辑:更新标题与问题更相关.
我在我的chrome扩展页面中添加了这个gtm代码(由内容脚本in和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 -->
Run Code Online (Sandbox Code Playgroud)
我确认已成功加载的gtm.js文件.
Request URL:https://www.googletagmanager.com/gtm.js?id=GTM-XXXXXX&l=dataLayer
Request Method:GET
Status Code:200 (from disk cache)
Run Code Online (Sandbox Code Playgroud)
我有一个按钮,下面的代码已附加到按钮的单击事件
dataLayer.push({'event':'tab click','user id':123,'description':"Social"});
当我单击按钮dataLayer.push成功工作但没有任何内容被发送到https://www.google-analytics.com/r/collect?
开发人员工具栏窗口的"网络"选项卡中的任何活动.
任何人都可以帮我解决这个问题吗?提前致谢!
我正在尝试在应用程序中使用GTM.目前,该应用程序没有使用CocoaPods,也不会使用CocoaPods.但GTM需要CocoaPods,似乎没有办法在没有CocoaPods的情况下安装GTM.但我希望有一种方法可以在没有CocoaPod的情况下使用GTM.我可以吗?
我目前正在制作Google跟踪代码管理器来处理我们所有的JavaScripts,因为我确信你们都知道好几个好处.
一切都计划除了一个问题,我肯定可以通过一个小调整来解决,我希望你们中的一个可以提供帮助.
Comodo使用2部分代码添加密封,一部分在内部,一部分在<head>内部<body>
像这样:
<head>
<!-- THIS CODE is loaded by GTM -->
<script>
//<![CDATA[
var tlJsHost = ((window.location.protocol == "https:") ? "https://secure.comodo.com/" : "http://www.trustlogo.com/");
document.write(unescape("%3Cscript src='" + tlJsHost + "trustlogo/javascript/trustlogo.js' type='text/javascript'%3E%3C/script%3E"));
//]]>
</script>
</head>
<body>
<!-- This CODE is NOT loaded by GTM and loaded in the FOOTER -->
<footer>
<script type="text/javascript">TrustLogo("https://www.example.com/comodo_secure_seal_113x59_transp.png", "CL1", "none");</script>
</footer>
</body>
Run Code Online (Sandbox Code Playgroud)
我绝不是一个JavaScript专家,但我可以告诉它从头部加载JavaScript,然后对身体中的JavaScript做一些额外的麻烦.如果我错了,请纠正我,但我认为问题与Google跟踪代码管理器不会添加内容的事实有关,<head>因为它会异步加载内容.
体内的SCRIPT没有被谷歌标签管理器加载,而其中的SCRIPT <head>是,我这样做是出于纯粹的懒惰,因为我不确定如何,或者你是否可以将JavaScript注入CSS选择器或ID HTML元素.
我已经测试的触发触发器是DOM准备好的,页面视图启用了文档写入,希望有人可以指出我正确的方向来解决这个问题,提前感谢.
html javascript asynchronous document.write google-tag-manager
我们已经通过应用程序接收了大量对我们的目标网页的新访问权限,几乎所有用户都使用Android(可以通过查看公共>技术>浏览器和操作系统进行验证).我测试了应用程序,并使用设备的浏览器在应用程序中加载页面.
但是,设备类别被解释为每个以这种方式访问它的Android用户的桌面.因此,在"实时"标签上显示,超过80%的访问者来自桌面,这可能会让包括我们客户在内的很多人感到困惑.

还有办法吗?
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">谢谢!
javascript ×3
jquery ×2
android ×1
asynchronous ×1
events ×1
html ×1
ios ×1
reactjs ×1
tags ×1
xcode ×1