Javascript Adobe DTM不将角度变量识别为数据元素
我正在Adobe DTM管理面板中定义数据元素,按照以下说明: 我已经成功地测试了相当标准的JS变量,比如Javascript Adobe DTM不将角度变量识别为数据元素,javascript,angularjs,adobe-analytics,Javascript,Angularjs,Adobe Analytics,我正在Adobe DTM管理面板中定义数据元素,按照以下说明: 我已经成功地测试了相当标准的JS变量,比如document.URL;这将正确填充到道具和/或评估中 我们的框架是有角度的;我们已经创建了一个称为“分析”的角度工厂,它保存了我们的分析包需要访问的值 我还通过chrome开发者工具测试了factory,以确保它在控制台中返回正确的值,并且返回正确的值 访问这些值的示例行如下所示: angular.element('*[ng app]').injector().get('analyti
document.URL
;这将正确填充到道具和/或评估中
我们的框架是有角度的;我们已经创建了一个称为“分析”的角度工厂,它保存了我们的分析包需要访问的值
我还通过chrome开发者工具测试了factory,以确保它在控制台中返回正确的值,并且返回正确的值
访问这些值的示例行如下所示:
angular.element('*[ng app]').injector().get('analytics').sVar.profileId
这将在控制台中返回正确的值,例如:“1234-5678-9101”
当我尝试在Adobe DTM中使用此路径时,分配给此值的道具和/或eVar中不会填充任何值
我想知道Adobe Analytics是否在解释此路径时遇到问题,或者我是否使用了错误的路径。我对AngularJS的接触是初学者
谢谢。这不是一条真正的道路。。这是一组链接在一起的js表达式,所以我不确定DTM是否真的可以处理这个问题 您是否尝试过将其作为自定义脚本来执行?如果你这样做的话,它肯定会起作用 如果它仍然不起作用,那么听起来你也有时间问题。向下滚动到该页面上的“数据元素可用性”部分 但即便如此,这也可能不够。e、 g.如果您在规则中使用此选项,而该规则设置为在“顶部”触发,则可能在您的数据存在之前触发。所以你可能也需要改变这一点 编辑更多有关计时的信息 DTM目前不提供控制何时通过接口设置数据元素的方法(例如,类似于基于事件的规则中的下拉列表)。然而,它确实提供了一种方法来明确地设置它 简而言之,您可以调用此函数来显式地计算数据元素
\u satellite.getVar('data element name')代码>
你把它放在哪里取决于你需要它的时间/地点。所以基本上,您将在DTM允许定时控制的上下文中调用它
例如,正如我前面提到的,向下滚动到“”部分,了解有关如何显式设置数据元素作为规则条件一部分的详细信息。例如,可以将页面加载规则设置为pop on DOM ready或Onload(window.load)
这可能是因为即使这样也不适合您,例如,如果在dom就绪或window.load之后发生angular服务层调用(我不知道您的脚本实际在做什么)
如果是这种情况,另一种方法是将DTM底部页面代码放在回调中,以便在angular的服务层调用中提供数据时调用,并且(如果还没有),将adobe analytics调用更改为“页面底部”触发
或者,您可以让初始的Adobe Analytics页面视图按自己的速度进行,并调用DTM直接调用规则,让您的VAR作为第二次Adobe Analytics调用弹出。基本上,它的工作方式是您创建一个直接调用规则,对于条件字符串,您将有一些独特的东西,比如“foobar”,然后在规则中设置您的Adobe变量。然后在数据层值可用时弹出的任何角度回调中,您都会调用
\u卫星跟踪(“foobar”)
编辑#2
因此,我在DTM核心代码中进行了探索,在我看来,pageBottomFired
在dom就绪时也被设置为true
。因此,基本上将\u satellite.pageBottom()
包装在某些东西中对您不起作用(上面的删除)。在我看来,我不认为应该是这样,但我想它就是这样
我确信直接调用方法会起作用,因为我以前使用过这种方法。。但我同意,这不是一个理想的解决方案。要从中删除额外的ping,您可以做的一件事是从主工具列表中删除Adobe Analytics,而是在直接调用规则中将其作为自定义js输出-这基本上意味着数据元素现在没有意义,因为您可以直接将s.prop或w/e与您的Adobe Analytics代码一起直接弹出到其中。简言之,这是一个非常丑陋的解决方案,它违背了DTM的观点,但除非Adobe在显式调用它时将其更改为仅触发pageBottom()
,否则它要么是此解决方案,要么是使用双Adobe Analytics请求:/
我想另一种选择可能是将实际的DTM脚本include放入angular.js回调中,但a)这也会破坏DTM具有完整计时范围的值,b)我不知道DTM实际会如何反应。我可能会玩弄它,看看它是否“有效”,但没有承诺 这不是一条真正的道路。。这是一组链接在一起的js表达式,所以我不确定DTM是否真的可以处理这个问题
您是否尝试过将其作为自定义脚本来执行?如果你这样做的话,它肯定会起作用
如果它仍然不起作用,那么听起来你也有时间问题。向下滚动到该页面上的“数据元素可用性”部分
但即便如此,这也可能不够。e、 g.如果您在规则中使用此选项,而该规则设置为在“顶部”触发,则可能在您的数据存在之前触发。所以你可能也需要改变这一点
编辑更多有关计时的信息
DTM目前不提供控制何时通过接口设置数据元素的方法(例如,类似于基于事件的规则中的下拉列表)。然而,它确实提供了一种方法来明确地设置它
简而言之,您可以调用此函数来显式地计算数据元素
\u satellite.getVar('data element name')代码>