首页 > 解决方案 > 无法通过 Adob​​e Launch 获取当前点击值

问题描述

我在 adobe 启动中创建了一个单击事件,它将捕获链接的值并将其发送到分析。我创建了一个用于保存值的数据元素,并且在我的 DOM 中我将值保存在本地存储中。

本地存储代码:

$('.card').click(function() {
       var name = $(this).text();
       localStorage.setItem('productName', name);
     });

我的问题是,当我单击第一个链接时,没有保存任何值,但是当我单击第二个链接后,它会保存第一个链接的值,而在第三个链接上保存第二个链接的值,依此类推。我想将当前链接值保存在 evar3 变量中。

数据元素:

数据元素

规则: 规则

设置变量: 设置变量

谢谢,哈西特

标签: adobeadobe-analyticsadobe-dtm

解决方案


关于为什么您的 jQuery 选择器与您的规则选择器不匹配,我有点摸不着头脑,但这可能不是立即相关或相关的,考虑到您说您通常看到数据弹出所以从表面上看,我我会忽略这一点。

但总的来说,听起来你的 jQuery 代码是在评估规则之后执行的,所以它实际上落后了一步。如果您打算像这样保留两个单独的单击事件侦听器,我不确定您是否可以做些什么。

您将不得不重组以使一条链脱离另一条链(我认为这实际上对于 jQuery > Launch as-is 是不可行的。也许如果您编写两个带有 Promise 链的单独自定义代码块,但那种回避启动和 IMO 使事情开始变得过于复杂(见下文))。更好的是,将它们合并到一个单击事件侦听器中。在那张纸条上..

为什么有两个单独的点击事件监听器?这是传递链接文本的唯一原因吗?因为您可以在启动规则本身中引用单击的元素。

您应该能够%this.innerText%Set Variables字段中引用。或者您可以this在规则内的自定义代码框中引用对象。

IOW 从表面上看,我不明白您为什么需要或应该创建/使用该 jQuery 侦听器或像这样推送到本地存储。

更新:

您评论了以下内容:

我尝试使用 %this.innerText% 它也没有显示当前值。我首先将值推送到本地存储,因为我的链接值是通过 API 在运行时生成的。它们不是硬编码的。我还试图弄清楚为什么我的规则在评估我的 jquery 之前被触发。但是当我使用 _satellite.getVar('Product Name');它检查控制台时,它会显示正确的值,但在调试器中控制台值是错误的。你能告诉我你想创建规则以正确触发它的方式吗?谢谢,

好的,所以您的链接值是通过 API 调用在运行时生成的?好吧,现在这听起来像是(时间)问题所在,原则上我提到你在 jQuery 和 Launch 代码之间遇到的问题是相同的。假设您无法更改此动态链接功能,您有两种选择:

1. 在生成链接值的 API 代码的回调中显式触发启动规则(直接调用规则)。

这是更好的方法,因为您的 API 与链接跟踪代码之间不会出现竞争条件问题。但是,关于此方法的最大警告是,它需要您主动向站点添加代码,这对您来说可能可行,也可能不可行。

我不知道您生成链接的代码是什么样的,但大概是一些 ajax 调用并从成功回调生成。因此,在回调中,您将添加如下代码行:

_satellite.track('product_image_click', {
    text : elem.innerText
});

同样,我不知道生成链接的 API 代码是什么样的,但大概你在其中有一些元素对象,你附加到或更新 DOM,所以对于这个例子,我将其称为elem.

'product_image_click' - 这是您在界面中用于直接调用规则标识符的值,例如:

在此处输入图像描述

然后_satellite.track()call 还在第二个参数中包含一个对象有效负载,您可以将其传递给直接调用规则。所以在上面的代码中,我设置了一个名为的属性text并给它一个值elem.innerText

然后,在您设置变量的直接调用规则中,您传递的数据可以从event.details自定义代码框内的对象(例如event.details.text)中引用,或者使用%接口字段中的语法(例如%event.details.text%)。

在此处输入图像描述

2.利用setTimeout延迟评估链接点击。

与选项 #1 相比,此方法的一个优点是它是被动的。您不必直接将代码添加到您的网站以使其正常工作。

但是,这是更隐蔽的选项,因为您真的不知道生成链接需要多长时间。但一般来说,如果您可以确定链接生成 API 平均需要 250 毫秒来完成它的工作,并且您将超时设置为 300-500 毫秒,那么大多数时候您可能会没事。但是,它永远不是 100% 的保证。

此外,如果点击链接最终会将访问者重定向到另一个页面,那么此解决方案可能根本不适合您,因为浏览器几乎肯定会在有机会执行之前进行导航。正因为如此,我通常不会提到这个作为一个选项,但由于你提到这个链接涉及一个在点击时生成链接值的 API,我想这可能不是导航/重定向链接,所以也许这个如果您不能执行选项#1,您可以选择这个选项。

首先,创建一个与选项#1 相同的直接调用规则。这将是接收链接文本并进行 Adob​​e Analytics(或任何其他营销标签)调用的规则。

然后,创建一个单独的规则作为点击事件,类似于您当前尝试执行的操作(根据您的 css 选择器侦听链接点击)。在此规则中,您不会设置任何 AA 变量。相反,使用如下代码添加自定义 js 框:

var elem = this;
(function (elem) {
    window.setTimeout(function() {
        _satellite.track('product_image_click', {
            text : elem.innerText
        });
    }, 500);
})(elem);

所以当规则被触发时,它会创建一个setTimeout回调来调用第一个规则,传递有效载荷中的链接文本。而且.. 希望代码示例中显示的 500 毫秒超时足以让 API 完成其工作。您可以向上或向下调整它。


推荐阅读