Javascript 我能把_satellite.pageBottom()放进去吗;在JS文件上?

Javascript 我能把_satellite.pageBottom()放进去吗;在JS文件上?,javascript,adobe-analytics,adobe-dtm,Javascript,Adobe Analytics,Adobe Dtm,通常,您会尽可能多地将_satellite.pageBottom()方法放在html的最低部分,如下所示: ... <script type="text/javascript">_satellite.pageBottom();</script> </body> </html> 因此,只要浏览器不阻止跟踪JSAPI,现在就可以了 这么做可以吗?总结 正式来说,你不应该做这种事 详细信息 缔约国声明如下: 重要提示:为了成功实施,您必须 按照Adob

通常,您会尽可能多地将_satellite.pageBottom()方法放在html的最低部分,如下所示:

...
<script type="text/javascript">_satellite.pageBottom();</script>
</body>
</html>
因此,只要浏览器不阻止跟踪JSAPI,现在就可以了


这么做可以吗?

总结

正式来说,你不应该做这种事

详细信息

缔约国声明如下:

重要提示:为了成功实施,您必须 按照Adobe帮助中的说明进行操作。明确地 必须将标题代码放在文档的
部分 模板。此外,必须将页脚代码放在 正在关闭
标记。将这些嵌入代码中的任意一个放置在 您的标记,或使用异步方法附加嵌入代码, 不支持以任何方式包装嵌入代码 动态标签管理的实现。嵌入的代码必须是 完全按照规定执行

不受支持的实现将产生意外的结果和错误 防止客户服务和工程部协助您 实施

所以,在我说其他任何事情之前,官方的回答是不,你不应该做这种事情。失去Adobe的支持通常是个坏主意,即使实现不是当前的最佳实践

非正式地

好的,首先,您提到在尝试执行此类操作时出现错误。首先,我有点不清楚你提到的错误。特别是,
\u卫星未定义
错误。对我来说,这听起来像是您尝试异步和/或延迟加载页眉脚本,而DTM库在调用页脚片段(satellite.pageBottom())之前没有及时加载。但你在问题中没有提到这一点;您只提到了页脚片段的问题

再一次,正式地说,您不能对这两个代码段中的任何一个执行此类操作。但是,即使您决定偏离文档,您肯定需要确保页眉片段在页脚之前加载,否则您将得到“
\u satellite
未定义”类型错误,因为页眉脚本是定义
\u satellite
的地方。因此,如果您想尝试使用异步和/或延迟,您应该查看承诺链,或者将页脚脚本包装在一些逻辑中,以查找
\u satellite
,如果未找到,则使用
setTimeout
重试多次。或者

在DOM就绪时,如果尚未执行
\u satellite.pageBottom()
,DTM将自己在内部调用它。因此,如果要实现完整的异步/延迟实现,技术上甚至不需要在站点上包含页脚脚本

在这方面。。采用完全异步/延迟的DTM实现意味着您必须确保通过DTM部署的所有内容都是异步的。我不知道您通过DTM部署了什么,但在实践中,您至少可以肯定通过DTM部署了Experience Cloud ID Service(ECID)和Adobe Analytics(AA),DTM目前不支持以异步方式部署这些服务(ECID需要在AA之前加载)。这只是一个标签/工具示例

因此,您至少应该尊重Header标记的文档。但是,如果您确保只在DOM-ready/async上部署东西,那么Footer标记对于几乎任何其他东西都更为宽容/可行但是,正式地说,您应该遵循这两个方面的文档,这是我的正式答案。

另一种选择

<>你应该考虑从Adobe DTM迁移到Adobe启动。Launch是Adobe最新的标签管理解决方案。DTM正在逐步淘汰。可以使用与DTM相同的页眉和页脚标记部署Launch,其中可以强制计时,但与DTM不同,Launch还具有官方的异步部署选项。页眉标记可以异步加载,并且没有页脚标记(对于异步部署)。Launch使用了一些魔术来确保Adobe工具的操作顺序(例如上面提到的ECID与AA)。对于通过Launch部署的其他标签,还提供了promise链支持


唯一真正的症结是如果你使用AdobeTarget。Target确实有一个异步库版本,但大多数人都避免使用它,因为它与UX的基本工作方式不一致。也就是说,异步在加载时会产生“闪烁”效果,因为默认页面内容被删除,浏览器正在等待加载响应。这通常被视为损害AB/MV测试工作完整性的不良用户体验。所以,若您使用Target,或者计划总体上进行AB/MV测试,那个么您应该坚持正常部署。但这一切都有点偏离了你最初的问题

谢谢你的答案蜡笔!我可以试着问一下Adobe。
...
<script src="/js/satellite.js?t=153664965811" defer="defer"></script>
</body>
</html>