我在Adobe启动中创建了一个click事件,它将捕获链接的值并将其发送到分析。我创建了一个用于保存值的数据元素,并在DOM中将值保存在本地存储中。
本地存储代码:
$('.card').click(function() {
var name = $(this).text();
localStorage.setItem('productName', name);
});
我的问题是,当我单击第一个链接时,没有保存任何值,但是当我单击第二个链接后,它保存了第一个链接的值,在第三个链接上时,保存了第二个链接的值,依此类推。我想将当前链接值保存在evar3变量中。
谢谢, Harshit
答案 0 :(得分:1)
对于您的jQuery选择器与Rule选择器不匹配的原因,我有些head之以鼻,但是考虑到您说的是数据弹出,通常这不是立即相关的, ,所以从表面上看,我将忽略它。
但是,一般来说,听起来好像是在评估Rule之后执行了jQuery代码,因此实际上落后了一步。我不确定如果您打算保留两个这样的独立单击事件侦听器,那么您是否可以对此做很多事情。
您将必须进行重组以使一条链与另一条链脱钩(我认为使用jQuery实际上是不可行的>按原样启动。也许如果您使用诺文链编写两个单独的自定义代码块,那某种方式的启动和IMO首先使事情变得过于复杂(请参见下文)。更好的是,将它们合并为单击事件侦听器。在那条纸上。
为什么这样做,您有两个单独的点击事件监听器?是唯一原因导致链接文本无效吗?因为您可以在“启动规则”本身中引用单击的元素。
您应该能够在设置变量字段中引用%this.innerText%
。或者,您可以在规则内的自定义代码框中引用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的元素对象,因此在本示例中,我将其称为{ {1}}。
'product_image_click'-这是您在界面中用于直接调用规则标识符的值,例如:
然后elem
调用还将在第二个参数中包含对象有效负载,您可以将其传递给直接调用规则。因此,在上面的代码中,我设置了一个名为_satellite.track()
的属性,并将其值设为text
。
然后,在直接调用规则中设置变量的位置,可以从自定义代码框中的elem.innerText
对象(例如event.details
)或使用event.details.text
引用传递的数据接口字段中的语法(例如%
)。
2。利用%event.details.text%
延迟评估链接点击。
此方法相对于选项#1的一个优点是它是被动的。您无需直接将代码添加到您的网站即可使其正常工作。
但是,这是更暗的选项,因为您实际上并不知道生成链接需要多长时间。但是一般来说,如果您可以确定链接生成API花费的时间平均为250毫秒,并且将超时时间设置为300-500毫秒,那么在大多数情况下您可能会满意。但是,这绝不是100%的保证。
此外,如果单击链接最终将访问者重定向到另一个页面,则此解决方案可能根本对您不起作用,因为几乎可以肯定浏览器已经导航过,才有机会执行。正因为如此,我通常甚至不会提到此选项,但是由于您提到此链接涉及一个在单击时会生成链接值的API,所以我认为这可能不是导航/重定向链接,所以也许是您可以选择的选项,如果您无法执行选项#1。
首先,创建与选项#1中所示相同的直接呼叫规则。这将是接收链接文本并进行Adobe Analytics(或任何其他市场营销标签)调用的规则。
然后,创建一个单独的规则作为click事件,类似于您当前正在尝试执行的操作(根据css选择器监听链接单击)。在此规则中,您将不会设置任何AA变量。相反,添加带有以下代码的自定义js框:
setTimeout
因此,当触发规则时,它将创建一个var elem = this;
(function (elem) {
window.setTimeout(function() {
_satellite.track('product_image_click', {
text : elem.innerText
});
}, 500);
})(elem);
回调以调用第一个规则,并在有效负载中传递链接文本。并且..希望代码示例中显示的500ms超时足以使API能够完成其任务。您可能可以向上或向下调整它。
答案 1 :(得分:0)
与其说在Data Element中定义它,不如说直接将其保留在Rule本身中更好。请尝试使用此%this.@text%
。
让我知道是否有帮助。