2015-08-08 32 views
0

我遇到了DTM和引用js對象的時間問題。我注意到,有時DTM無法訪問Web應用程序(ASP.net MVC框架)創建的js對象。 js對象是在任何來自DTM加載的js之前創建的,但我開始不得不在幾個地方使用「settimeouts」以確保我有對象的上下文,但現在變得越來越難以管理,因爲我必須在很多地方做這個。Adob​​e DTM和引用對象的時間

我想知道是否有人對如何延遲加載DTM文件有任何建議,直到我知道我有權訪問該對象?我有一個引導文件加載相應的DTM文件。我在考慮可能將延遲放入引導加載程序文件,但我仍然不喜歡該解決方案,因爲我也關心頁面的加載時間。想法?

- 謝謝!

回答

1

你說得對。這可能會很棘手。本質上,它是DTM頁面加載和代碼執行之間的競爭。

如果這是您需要在頁面加載時控制的東西,一種解決方案是在頁面加載時「中止」原始AA請求,然後在存在對象時調用直接調用規則來發送數據。

我可能會嘗試這樣的事:

//Page Load Rule - Adobe Analytics Custom Code Section 

s.abort = true // cancel the initial image request on page load 

//Check for ASP Object 
//Can be done within AA custom code or a custom JS tag 

if (MY_OBJ_EXISTS) { 

_satellite.track('MY_RULE_TO_SEND_DATA_TO_AA') 

} 

,如果你有阿賈克斯,需要您將數據發送到AA之前加載相同的概念可以適用。您可以中止最初的通話,監聽回撥並通過直接呼叫規則發送數據。

希望這會有所幫助。

+0

任何想法什麼是最好的方式來確定什麼時候對象準備好/我環顧四周,並沒有發現太多? –

+0

@MichaelJohns使用's.abort'有一些需要注意的地方。有關詳細信息,請參見[此答案](http://stackoverflow.com/questions/25325862/kill-switch-for-adobe-analytics-using-dtm/25331981#25331981) –