我遇到了 DTM 和引用 js 对象的时间问题。我注意到,有时,DTM 无法访问 Web 应用程序(ASP.net MVC 框架)创建的 js 对象。 js 对象是在 DTM 加载任何 js 之前创建的,但我开始必须在一些地方使用“settimeouts”以确保我拥有该对象的上下文,但这现在变得越来越难以管理,因为我必须在多个地点执行此操作。
我想知道是否有人对如何延迟 DTM 文件的加载有任何建议,直到我知道我有权访问该对象?我有一个加载适当 DTM 文件的 Bootstrap 文件。我正在考虑可能将延迟放入引导加载程序文件中,但我仍然不喜欢该解决方案,因为我还担心页面的加载时间。有想法吗?
-谢谢!
最佳答案
你是对的。这可能很棘手。本质上,这是 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 之前加载的 ajax,则可以应用相同的概念。您可以中止初始调用、监听回调并通过直接调用规则发送数据。
希望这有帮助。
关于javascript - Adobe DTM 和引用对象的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31899491/