adobe.target.triggerView (viewName, options) - at.js 2.x
每当加载新页面或重新渲染页面上的组件时,都可以调用此函数。应该为单页应用程序(SPA)实现adobe.target.triggerView()
以使用Visual Experience Composer (VEC)创建A/B Test和Experience Targeting (XT)活动。 如果未在站点上实现adobe.target.triggerView()
,则VEC无法用于SPA。 有关更多信息,请参阅单页应用程序实施。
TRUE: page 的默认值为 true。当 page=true 时,将向 Target 后端发送增加展示次数计数的通知。
调用triggerView
时,默认情况下始终会发送通知,但options > page设置为false时除外。
FALSE: 当page=false时,将不会发送增加展示次数计数的通知。 当您只想在具有选件的页面上重新呈现组件时,才应该使用此方法。
注意:在将{page: false}
作为选项调用triggerView()
时,不会重新呈现VEC中的自定义代码选件。
示例:True
triggerView()
调用以向Target后端发送增加活动展示次数和其他量度的通知。
adobe.target.triggerView("homeView")
示例:False
triggerView()
调用不会向Target后端发送增加展示次数计数的通知。
adobe.target.triggerView("homeView", {page: false})
示例:与getoffers()
和applyOffers()
链接的Promise
要在解析getOffers()
promise时执行triggerView()
,必须在最终块上执行triggerView()
,如以下示例所示。 这是VEC在创作模式下检测Views
所必需的。
adobe.target.getOffers({
'request': {
'prefetch': {
'views': [{
'parameters': {}
}]
}
}
}).then(function(response) {
// Apply Offers
adobe.target.applyOffers({
response: response
});
}).catch(function(error) {
console.log("AT: getOffers failed - Error", error);
}).finally(() => {
// Trigger View call, assuming pageView is defined elsewhere
adobe.target.triggerView(pageView, {
page: true
});
console.log('AT: View triggered on : ' + pageView);
});
示例:triggerView()
与Adobe Visual Editing Helper extension的最佳兼容性
使用Adobe可视化编辑帮助程序扩展时,请考虑以下事项:
由于Google为Chrome扩展添加了新的V3清单策略,Visual Editing Helper extension必须等待DOMContentLoaded
事件才能在VEC中加载Target库。 此延迟可能会导致网页在创作库准备就绪之前触发triggerView()
调用,从而导致在加载时未填充视图。
要缓解此问题,请为页面load
事件使用侦听器。
以下是实施示例:
function triggerViewIfLoaded() {
adobe.target.triggerView("homeView");
}
if (document.readyState === "complete") {
// If the page is already loaded
triggerViewIfLoaded();
} else {
// If the page is not yet loaded, set up an event listener
window.addEventListener("load", triggerViewIfLoaded);
}