那不是真正的路径.. 那是一组链接在一起的 js 表达式,所以我不确定 DTM 是否真的可以处理它。
您是否尝试过将其作为自定义脚本来实现?如果你这样做,它肯定会起作用。
如果它仍然不起作用,那么听起来你也有时间问题。向下滚动到该页面上的“数据元素可用性”部分。
但即便如此,这可能还不够。例如如果您在设置为触发“顶部”的规则中使用它,则可能在您的数据甚至存在之前出现。所以你可能也需要改变它。
编辑更多关于时间的信息
DTM 目前不提供一种方法来控制何时通过界面设置数据元素(例如,基于事件的规则中的下拉菜单)。但是,它确实提供了一种在一般情况下显式设置它的方法。
简而言之,您可以调用它来显式评估数据元素
_satellite.getVar('data element name');
您将其放置在何处取决于您需要它何时/何地可用。因此,基本上您将在 DTM 确实 允许时序控制的上下文中调用它。
例如,正如我之前提到的,向下滚动到“Data Element Availability”部分,详细了解如何将数据元素显式设置为规则条件的一部分。例如,页面加载规则可以设置为在 DOM 就绪或 Onload (window.load) 时弹出。
这可能对你不起作用,例如如果在 dom 就绪或 window.load 之后发生角度服务层调用(我不知道您的脚本实际上在做什么)。
如果是这种情况,另一种方法是将 DTM 底部页面代码放在回调中,以便当您的数据可从 Angular 的服务层调用中获得时,并且(如果还没有)更改您的 adobe 分析调用以触发在“页面底部”。
或者,您可以让最初的 Adobe Analytics 页面视图按照自己的节奏进行,并调用 DTM 直接调用规则,让您的变量作为第二次 Adobe Analytics 调用弹出。基本上工作的方式是你制定一个直接调用规则,对于条件字符串,你会有一些独特的东西,比如“foobar”,然后在规则中设置你的 Adobe vars。然后在数据层值可用时弹出的任何角度回调中,您将调用
_satellite.track('foobar')
编辑#2
所以我在 DTM 核心代码中四处寻找,在我看来 pageBottomFired 在 dom 准备就绪时也设置为 true。因此,基本上将_satellite.pageBottom() 包装在某些东西中对您不起作用(上面的删除线)。 IMO 我不认为它应该是这样,但我想它就是这样。
我确信直接调用方法会起作用,因为我以前使用过这种方法。但我同意,这不是一个理想的解决方案。要从中删除额外的 ping,您可以做的一件事是从主工具列表中删除 Adobe Analytics,而是在直接调用规则中将其作为自定义 js 输出 - 这基本上意味着数据元素现在毫无意义,因为您可以直接弹出s.prop 或 w/e 连同您的 Adobe Analytics 代码直接在其中。简而言之,这是一个非常丑陋的解决方案,它违背了 DTM 的观点,但除非 Adobe 将其更改为仅在显式调用时触发 pageBottom(),否则它要么是这样,要么与双重 Adobe Analytics 请求一起生活:/
我想另一种选择可能是将实际的 DTM 脚本包含到您的 angular.js 回调中,但是 a)这也会破坏具有完整时序范围的 DTM 的值,b)我不知道 DTM 将如何实际反应那。我可能会玩弄它,看看它是否“有效”,但没有承诺。