gpt4 book ai didi

javascript - Adobe DTM 无法将 Angular 变量识别为数据元素

转载 作者:行者123 更新时间:2023-11-30 08:44:49 25 4
gpt4 key购买 nike

我正在按照以下说明在 Adob​​e DTM 管理面板中定义数据元素:

http://microsite.omniture.com/t2/help/en_US/dtm/index.html#Data_Elements

我已经成功地测试了相当标准的 JS 变量,例如 document.URL;这会正确填充到 prop 和/或 eVar 中。

我们的框架是 Angular ;我们创建了一个名为“analytics”的 Angular 工厂,它保存我们的分析包需要访问的值。

我还通过 chrome 开发人员工具测试了工厂,以确保它在控制台中返回正确的值,并且确实返回了正确的值。

访问这些值的示例行如下:

angular.element('*[ng-app]').injector().get('analytics').sVar.profileId

这会在控制台中返回正确的值,例如:"1234-5678-9101"

当我尝试在 Adob​​e DTM 中使用此路径时,prop 和/或分配给此值的 eVar 中未填充任何值。

我想知道 Adob​​e Analytics 是否在解释此路径时遇到问题,或者我使用的路径不正确。我接触 AngularJS 是初学者。

谢谢。

最佳答案

那不是真正的路径..那是一组链接在一起的 js 表达式,所以我不确定 DTM 是否真的可以处理它。

您是否尝试过将其作为自定义脚本来执行?如果你这样做,它肯定会起作用。

如果还是不行,那么听起来你也有时间问题。向下滚动到该页面上的“数据元素可用性”部分。

但即便如此,这可能还不够。例如如果您在设置为在数据甚至存在之前可能出现的“顶部”触发的规则中使用它。所以你可能也需要改变它。

使用有关计时的更多信息进行编辑

DTM 目前不提供一种方法来控制何时通过界面设置数据元素(例如,基于事件的规则中的下拉列表)。但是,它确实提供了一种通常明确设置它的方法。

简而言之,您可以调用它来显式评估数据元素

_satellite.getVar('数据元素名称');

放置它的位置取决于您需要它在何时何地可用。所以基本上,您将在 DTM 确实 允许计时控制的上下文中调用它。

例如,正如我之前提到的,向下滚动到“Data Element Availability”部分,了解有关如何将数据元素显式设置为规则条件的一部分的详细信息。例如,可以将页面加载规则设置为在 DOM 就绪或加载 (window.load) 时弹出。

这可能对您不起作用,例如如果在 dom 准备好或 window.load 之后发生 Angular 服务层调用(我不知道您的脚本实际在做什么)。

如果是这种情况,另一种方法是将 DTM 底部页面代码放入回调中,以便当您的数据可从 angular 的服务层调用中获得时,并且(如果还没有)将您的 adobe 分析调用更改为触发在“页面底部”。

或者,您可以让初始 Adob​​e Analytics 页面 View 按照自己的节奏发生并调用 DTM 直接调用规则,并让您的变量作为第二次 Adob​​e Analytics 调用弹出。基本上,工作方式是您制定直接调用规则,对于条件字符串,您将拥有诸如“foobar”之类的独特内容,然后在规则中设置您的 Adob​​e 变量。然后在数据层值可用时弹出的任何 Angular 回调中,你会调用

_satellite.track('foobar')

编辑 #2

所以我查看了 DTM 核心代码,在我看来 pageBottomFired 也在 dom 准备就绪时设置为 true。所以基本上将 _satellite.pageBottom() 包裹在某些东西中对你不起作用(上面的删除线)。 IMO 我不认为应该是这样,但我想它就是这样。

我确信直接调用方法会起作用,因为我以前使用过这种方法。但我同意,这不是一个理想的解决方案。要从中删除额外的 ping,您可以做的一件事是从主要工具列表中删除 Adob​​e Analytics,而是在直接调用规则中将其输出为自定义 js——这基本上意味着数据元素现在毫无意义,因为您可以直接弹出s.prop 或 w/e 直接与您的 Adob​​e Analytics 代码一起放在其中。简而言之,这是一个非常丑陋的解决方案,它违背了 DTM 的要点,但除非 Adob​​e 将其更改为仅在显式调用时触发 pageBottom(),否则要么是这个,要么是双 Adob​​e分析请求:/

我想另一种选择可能是将实际的 DTM 脚本包含到您的 angular.js 回调中,但是 a) 这也破坏了具有完整时序范围的 DTM 的值(value),b) 我不知道 DTM 实际上会如何 react 那。我可能会玩弄它,看看它是否“有效”,但没有 promise 。

关于javascript - Adobe DTM 无法将 Angular 变量识别为数据元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22941638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com