at.js 常見問題

關於的常見問題解答 Adobe Target at.js JavaScript資料庫。

使用at.js或mbox.js各有何優點?

at.js程式庫會取代mbox.js。 不再支援mbox.js資料庫。 不過,對於大多數人來說,at.js的優點多於mbox.js。

除了眾多優點以外,at.js還能改進Web實施的頁面載入時間、改進安全性,以及為單頁應用程式提供更好的實施選項。

下圖比較使用 mbox.js 或 at.js 的頁面載入效能。

(按一下影像可展開至完整寬度。)

比較mbox.js與at.js的頁面效能圖表 {modal="regular"}

如上圖所示,使用mbox.js時,頁面內容要等到 Target 呼叫完成。 使用 at.js 時,頁面內容在 Target 呼叫起始時就開始載入,不會等到呼叫完成。

at.js和mbox.js對頁面載入時間有何影響?

許多客戶和顧問都想要瞭解at.js和mbox.js對頁面載入時間的影響,尤其是在比較新使用者和再度訪問的使用者時。 可惜,有關at.js或mbox.js如何影響頁面載入時間,由於每個客戶的實施不同,很難測量和提出具體數字。

不過,如果頁面上存在訪客API, Target 更能瞭解at.js和mbox.js對頁面載入時間有何影響。

NOTE
只有當使用全域mbox時,「訪客API」和at.js或mbox.js才會影響頁面載入時間(原因在於主體隱藏技術)。 訪客 API 整合不影響地區 mbox。

以下小節說明新訪客和再度造訪的訪客的動作序列:

新訪客

  1. 訪客 API 會載入、剖析和執行。

  2. at.js / mbox.js 會載入、剖析和執行。

  3. 如果已啟用全域mbox自動建立,則 Target JavaScript程式庫:

    • 實體化訪客物件。
    • 此 Target 資料庫會嘗試擷取Experience Cloud訪客ID資料。
    • 由於此訪客是新訪客,因此訪客API會向demdex.net發出跨網域請求。
    • 擷取Experience Cloud訪客ID資料後,要求將 Target 觸發。

再度訪問的訪客

  1. 訪客 API 會載入、剖析和執行。

  2. at.js / mbox.js 會載入、剖析和執行。

  3. 如果已啟用全域mbox自動建立,則 Target JavaScript程式庫:

    • 實體化訪客物件。
    • 此 Target 資料庫會嘗試擷取Experience Cloud訪客ID資料。
    • 訪客 API 會從 Cookie 擷取資料。
    • 擷取Experience Cloud訪客ID資料後,要求將 Target 觸發。
NOTE
對於新訪客,當存在訪客API時, Target 必須多次翻線才能確保 Target 請求包含Experience Cloud的訪客ID資料。 若為再度訪問的訪客, Target 只透過電線傳送到 Target 以擷取個人化內容。

從舊版 at.js 升級為版本 1.0.0 之後,為什麼我發現回應時間好像變慢了?

at.js 1.0.0版和更新版本會平行觸發所有請求。 舊版會循序執行請求,亦即請求會放入佇列中,且 Target 會等待第一個要求完成,再繼續下一個要求。

舊版at.js執行請求的方式易於發生所謂的「線頭阻塞」。 在at.js 1.0.0和更新版本中, Target 已切換至平行請求執行。

舉例來說,如果您檢查at.js 0.9.1的網路標籤瀑布圖,您將會在下個步驟中看到 Target 前一個請求完成時才會開始請求。 at.js 1.0.0和更新版本就不是這個序列,所有要求基本上是同時開始。

從回應時間的角度,從數學上來說,這個順序可以這樣加總

  • at.js 0.9.1:全部的回應時間 Target 請求=請求回應時間總和
  • at.js 1.0.0和更新版本:全部的回應時間 Target 請求=請求回應時間上限

at.js程式庫1.0.0版可更快完成要求。 此外,at.js要求為非同步,因此 Target 不會阻擋頁面呈現。 即使請求需要幾秒鐘才能完成,您仍會看到轉譯的頁面,只有頁面的某些部分會變成空白,直到 Target 從取得回應 Target edge.

我可以載入 Target 非同步程式庫?

at.js 1.0.0版可載入 Target 非同步處理程式庫。

若要非同步載入 at.js:

  • 建議方法是透過Adobe Experience Platform中的標籤進行。

  • 您也可以在載入 at.js 的指令碼標記中新增 async 屬性,就能非同步載入 at.js。使用類似以下的內容:

    code language-none
    <script src="<URL to at.js>" async></script>
    
  • 您也可以使用此程式碼來非同步載入 at.js:

    code language-none
    var script = document.createElement('script');
    script.async = true;
    script.src = "<URL to at.js>";
    document.head.appendChild(script);
    

非同步載入 at.js 可有效避免讓瀏覽器無法呈現;不過,此技術可能導致網頁上忽隱忽現。

您可以使用預先隱藏的程式碼片段來避免忽隱忽現情形,它會隱藏頁面(或指定部分),然後在at.js和全域要求載入後顯示內容。 您必須在載入 at.js 之前新增此程式碼片段。

如果您透過非同步部署at.js Adobe Experience Platform 實作之前,請務必直接在頁面上加入預先隱藏的程式碼片段 Target 使用 Adobe Experience Platform 內嵌程式碼。

如果您是透過同步 DTM 實作部署 at.js,可透過頁面頂端觸發的頁面載入規則新增預先隱藏的程式碼片段。

如需詳細資訊,請參閱 at.js 處理忽隱忽現情況的方式

at.js是否與 Adobe Experience Manager 整合(Experience Manager)?

Adobe Experience Manager 6.2具有FP-11577 (或更新版本)現在支援at.js實施及其 Adobe TargetCloud Service 整合。

使用at.js時如何防止頁面載入忽隱忽現?

Target 提供數種防止頁面載入忽隱忽現的方法。 如需詳細資訊,請參閱使用 at.js 防止忽隱忽現情形

at.js的檔案大小多大?

at.js 檔案下載後大約 109 KB。不過,因為大部分伺服器會自動壓縮檔案,使檔案變小,at.js 在伺服器上壓縮 (使用 GZIP 或其他方法) 和當使用者造訪您的網站而載入時,大約是 34 KB。您安裝 at.js 的伺服器上的壓縮設定,就決定實際壓縮大小。

at.js為何比mbox.js還大?

at.js實作使用單一資料庫(at.js),而mbox.js實作實際上使用兩個資料庫(mbox.js和target.js)。 所以,at.js 要同時與 mbox.js target.js 一起比較才公平。比較兩個版本的 gzip 大小,at.js 1.2 版是 34 KB,而 mbox.js 63 版是 26.2 KB。

at.js 較大,因為它執行的 DOM 剖析比 mbox.js 多很多。這有必要,因為 at.js 在 JSON 回應中是取得「原始」資料,必須轉換成有意義的資料。使用的mbox.js document.write() 而所有剖析均由瀏覽器完成。

儘管檔案較大,但我們的測試指出 at.js 的頁面載入比 mbox.js 更快。此外,在安全性方面,at.js較優秀,因為不會動態載入額外檔案,或使用 document.write.

at.js 中有 jQuery 嗎? 因為我的網站上已有jQuery,我可以移除at.js的這部分嗎?

at.js目前使用部分的jQuery,因此您在at.js頂端會看到MIT授權通知。 jQuery 不公開,不會干擾您在頁面上已有的 jQuery 程式庫 (可能是不同版本)。恕不支援移除 at.js 內的 jQuery 程式碼。

at.js支援Safari和設為x-only的跨網域嗎?

否,如果跨網域設為x-only且Safari已停用第三方Cookie,則mbox.js和at.js會設定停用的Cookie,而且不會針對該特定使用者端的網域執行任何mbox要求。

為了支援Safari訪客,較好的X-Domain應該是「停用」(僅設定第一方Cookie)或「啟用」(僅在Safari上設定第一方Cookie,在其他瀏覽器上設定第一方和第三方Cookie)。

我可以使用Target 視覺化體驗撰寫器 (VEC)是否適用於我的單頁應用程式?

可以,若您使用at.js 2.x,便可針對SPA使用VEC。如需詳細資訊,請參閱 單頁應用程式(SPA)視覺化體驗撰寫器.

我可以對 at.js 實施使用 Adobe Experience Cloud Debugger 嗎?

是.您也可以使用 mboxTrace 以進行偵錯,或使用瀏覽器的開發人員工具以檢查網路請求,篩選「mbox」以隔離 mbox 呼叫。

對於 at.js,mbox 名稱中可以使用特殊字元嗎?

可以,與 mbox.js 相同。

為什麼在我的網頁上 mbox 不會觸發?

Target 客戶有時會使用雲端型例項搭配 Target 用於測試或簡單的概念證明用途。 這些網域和許多其他網域均屬於公用字尾清單

如果您使用這些網域,則現代瀏覽器不會儲存Cookie,除非您自訂 cookieDomain 使用targetGlobalSettings()進行設定。 如需詳細資訊,請參閱 使用雲端型例項搭配 Target.

可以,只要您使用 at.js 1.2 版或更新版本。不過,Adobe強烈建議您保持最新版本。

NOTE
如果您使用 at.js 1.2 版或更新版本,則不需要下列範例。

視您使用 targetGlobalSettings 的方式而定,在下載 at.js 之前,您可能需要另外修改程式碼。例如,假設您的 Target 實施在各種網站上需要稍微不同的設定,且您無法使用自訂 JavaScript 來動態定義這些設定,請在下載檔案之後和上傳至個別網站之前,手動完成這些自訂。

下列範例可讓您使用 targetGlobalSettings() at.js 函數,插入程式碼片段來支援 IP 位址:

此範例適用於單一 IP 位址:

if (window.location.hostname === '123.456.78.9') {
    window.targetGlobalSettings = window.targetGlobalSettings || {};
    window.targetGlobalSettings.cookieDomain = window.location.hostname;
}

此範例適用於 IP 位址範圍:

if (/^123\.456\.78\..*/g.test(window.location.hostname)) {
    window.targetGlobalSettings = window.targetGlobalSettings || {};
    window.targetGlobalSettings.cookieDomain = window.location.hostname;
}

為何會看到警告訊息,例如「動作缺少選取器」?

這些訊息與at.js功能無關。 at.js程式庫會嘗試報告DOM中找不到的任何事物。

如果您看到此警告訊息,以下為可能的根本原因:

  • 頁面正在動態建立,且at.js找不到元素。

  • 頁面建置速度緩慢(因為網路速度緩慢),且at.js在DOM中找不到選取器。

  • 執行活動的頁面結構已變更。如果您在可視化體驗撰寫器 (VEC) 中重新開啟活動,應該會看到警告訊息。更新活動,以便找到所有必要的元素。

  • 基礎頁面是單頁應用程式(SPA)的一部分,或頁面包含的元素出現在頁面很下方,而at.js「選取器輪詢機制」找不到這些元素。 提高 selectorsPollingTimeout 或許有用。如需詳細資訊,請參閱 targetGlobalSettings()

  • 任何點擊追蹤量度會嘗試將本身新增至每個頁面,而不論設定此量度的 URL。此狀況雖然無害但會顯示許多這類訊息。

    為了獲得最佳結果,請下載並使用 最新版本的at.js. 如需如何下載at.js的詳細資訊,請參閱 使用下載at.js Target 介面 中的區段 如何部署at.js > 實作 Target 不使用標籤管理程式 文章。

什麼是tt.omtrdc.net網域 Target 伺服器呼叫會傳送到?

tt.omtrdc.net是Adobe EDGE網路的網域名稱,用來接收所有伺服器呼叫 Target.

為何at.js不一律使用HttpOnly和Secure Cookie標幟?

HttpOnly 只能透過伺服器端編碼來設定。Target Cookie (例如mbox)是透過JavaScript程式碼建立及儲存的,因此 Target 無法使用HttpOnly Cookie標幟。 Target 啟用跨網域時,不會針對從伺服器端設定的第三方Cookie使用set HttpOnly。

Secure 只有在頁面是經由 HTTPS 來載入時,能透過 JavaScript 設定。如果頁面一開始是透過 HTTP 載入,JavaScript 無法設定此旗標。此外,如果使用Secure標幟,則Cookie僅可在HTTPS頁面上使用。 對於透過HTTPS載入的頁面, Target 設定Secure和SameSite=None屬性。

若要確保 Target 可以正確追蹤使用者,而且由於Cookie是在使用者端產生, Target 除了上述情況外,請勿使用任何這些標幟。

at.js如何處理安全性問題,例如XSS和MITM攻擊?

與at.js所啟用的Adobe Edge網路的通訊,只會透過HTTPS進行,只要 secureOnly 選項在targetGlobalSettings()函式(targetGlobalSettings),否則允許at.js根據頁面通訊協定,在HTTP與HTTPS之間切換。

預設會強制執行下列標頭:

  • HTTP強制安全傳輸技術(HSTS)
  • X-XSS保護
  • X內容型別選項
  • 反向連結原則

已用於使用者端頁面的所有標頭皆可強制執行。 一個常見方法是透過「HTTP要求標頭授權」。 Adobe客戶服務可就最佳方法和實務提供進一步建議。

此外,對Adobe Edge網路的請求是公開的(因為這些請求是設計成從訪客的瀏覽器中發出),並且不包含可見的訪客詳細資訊(僅包含訪客ID)。 這些請求會將體驗傳送給訪客,而且包含訪客應在頁面上看到的詳細資訊。

請注意,對於在這些要求中傳輸的回應Token和工作階段ID:

  • 他們追蹤通訊工作階段
  • 由隨機字元組成
  • 工作階段ID的有效時間為30分鐘
  • 回應Token可停用(回應Token)
  • 它們僅在Adobe解決方案的環境中有用。

預期會看到 Access-Control-Allow-Origin at.js要求中值為「*」的標頭,由於它們是公開的,因此不需要驗證,並且需要透過JavaScript呼叫從任何網域存取Adobe Edge網路。

不過,必須在頁面上執行內容安全性原則(CSP)。 如需at.js的CSP需求詳細資訊,請參閱 內容安全性原則targetGlobalSettings.

at.js 觸發網路要求的頻率為何?

Target 會在伺服器端執行其所有決策。 這表示 at.js 會在每次頁面重新載入或叫用 at.js 公用 API 時,觸發網路要求。

在最好的情況下,我們能否期望使用者在隱藏、取代,和顯示內容方面,不會受到任何頁面載入上的可見影響?

at.js會試圖長時間避免預先隱藏HTMLBODY或其他DOM元素,但這取決於網路條件和活動設定。 at.js 提供的設定可用於自訂隱藏 CSS 樣式的 BODY 設定,如此一來您就可以僅預先隱藏頁面的某些部份,而不用隱藏整個 HTML BODY。期望是那些部分包含了必須「個人化」的 DOM 元素。

在使用者符合活動資格的一般情況下,事件的序列為何?

由於 at.js 要求為非同步 XMLHttpRequest,因此我們會執行下列步驟:

  1. 頁面載入。
  2. at.js 預先隱藏 HTML BODY。有可以預先隱藏特定容器,而非 HTML BODY 的設定。
  3. at.js 要求觸發。
  4. 在 Target 已收到回應, Target 會擷取CSS選取器。
  5. 使用CSS選取器, Target 建立STYLE標籤以預先隱藏將自訂的DOM元素。
  6. 移除預先隱藏 STYLE 的 HTML BODY。
  7. Target 開始輪詢DOM元素。
  8. 如果找到DOM元素, Target 套用DOM變更,並移除元素預先隱藏STYLE。
  9. 如果找不到DOM元素,全域逾時會取消隱藏這些元素,以避免頁面損毀。

at.js最後取消隱藏活動正在變更的元素時,頁面內容完全載入和顯示的頻率為何?

考量到上述情況,at.js最後取消隱藏活動正在變更的元素時,頁面內容完全載入和顯示的頻率為何? 換句話說,除了活動內容外,頁面會完全顯示,而活動內容則會在其餘內容顯示後稍微顯示。

at.js 不會讓頁面無法呈現。使用者可能會注意到頁面上的一些空白區域,這些區域代表已由自訂的元素 Target. 若要套用的內容並未包含許多遠端資產 (例如 SCRIPT 或 IMG),則所有內容皆應快速呈現。

完全快取的頁面會如何影響上述情況? 其餘頁面內容載入後,活動內容是否更有可能明顯可見?

如果頁面快取所在的CDN靠近使用者的位置,但不靠近使用者的位置, Target edge,該使用者可能會看到一些延遲。 Target 邊緣遍佈全球,因此這通常不是問題。

是否可以顯示主圖影像,然後在短暫的延遲後進行更換?

考量到下列情況:

此 Target 逾時為5秒。 使用者載入具有自訂主圖影像活動的頁面。at.js 傳送要求以確認是否有要套用的活動,但無初始回應。假設使用者看見了主圖影像的一般內容,因為並未收到任何回應 Target 關於是否有相關聯的活動。 4秒後, Target 會傳回包含活動內容的回應。

在此階段,是否可以顯示替代版本? 4 秒後,是否可以更換主圖影像且使用者會注意到此影像更換?

起初,主圖影像 DOM 元素會隱藏。在來自的回應之後 Target 接收到,at.js會套用DOM變更,例如取代IMG並顯示自訂的主圖影像。

at.js 需要什麼 HTML doctype?

at.js 需要 HTML 5 doctype。

此語法為:

<!DOCTYPE html>

HTML 5 doctype 可確保頁面以標準模式載入。使用怪異模式載入時,會停用 at.js 所根據的某些 JS API。Target 在Quirks模式中停用at.js。

at.js是否適用於Ionic應用程式環境。

此實作從未進行過測試,因為at.js的用途並非在非Web環境中運作。 Adobe 建議其 行動實作適用的SDK.

recommendation-more-help
6906415f-169c-422b-89d3-7118e147c4e3