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,不會傳送通知以增加曝光計數。 只有當您想重新呈現頁面上具有選件的元件時,才應該使用此方法。
注意:呼叫triggerView()
並將{page: false}
作為選項時,不會重新轉譯VEC中的自訂程式碼選件。
範例: True
將通知傳送至Target後端以增加活動曝光次數和其他量度的triggerView()
呼叫。
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的最佳相容性
使用AdobeVisual Editing Helper擴充功能時,請考量下列事項:
由於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);
}