通常,您将_satellite.pageBottom()方法尽可能多地放在html的最下部,就像:
...
<script type="text/javascript">_satellite.pageBottom();</script>
</body>
</html>
但是我在浏览器中遇到错误,要么由于带宽过多而被阻止加载,要么浏览器只是阻止其加载或延迟加载而导致_satellite undefined
错误
所以我要做的是将其放入JS文件并添加defer="defer"
属性
...
<script src="/js/satellite.js?t=153664965811" defer="defer"></script>
</body>
</html>
因此,只要浏览器不阻止跟踪JS API,这现在就可以正常工作。
这可以吗?
答案 0 :(得分:0)
使用defer
(您可以只写defer
,不需要defer=defer
)强制浏览器按顺序获取指定的资源。
您要执行的操作是按以下顺序放置脚本:
<script src="/js/satellite.js?t=153664965811" defer></script>
<script type="text/javascript" defer>_satellite.pageBottom();</script>
答案 1 :(得分:0)
摘要
从官方上讲,您不应该这样做。
详细信息
documentation指出以下内容:
重要提示:要成功实施,请务必确保 请按照Adobe帮助中显示的说明进行操作。特别, 您必须将标题代码放在文档的
<head>
部分中 模板。另外,您必须将页脚代码放在 关闭</body>
标签。将这些嵌入代码中的任何一个放置在 您的标记,或使用异步方法来附加嵌入代码, 或以任何方式包装嵌入代码,均不受支持 动态标签管理的实现。嵌入代码必须为 完全按照规定实施。不受支持的实现将产生意外结果,并且 阻止客户服务和工程部门协助您 实施。
因此,在我无话可说之前,官方的回答是“不”,您不应该做这种事情。即使实施不是当前的最佳做法,通常也无法获得Adobe的支持。
非官方..
好的,首先,您提到在尝试执行此类操作时遇到错误。首先,我不清楚您提到的错误。特别是_satellite undefined
错误。对我来说,这听起来像是您尝试异步和/或延迟加载 Header 脚本,并且DTM库没有在 Footer 代码段({{ 1}})被调用。但是您没有在问题中提到这一点;您只提到了 Footer 代码段的问题。
再一次,正式地,您不能对任一代码片段执行此类操作。但是,即使您决定偏离文档,也绝对需要确保在页脚之前加载了Header代码段,否则您将收到“ _satellite.pageBottom()
未定义”类型错误,因为Header脚本就是{{ 1}}已定义。因此,如果您想涉猎异步处理和/或延迟处理,则应研究Promise链,或将Footer脚本包装在某种逻辑中,以寻找_satellite
,如果找不到_satellite
,则尝试再次多次。或者..
在DOM准备就绪时,如果尚未执行_satellite
,则DTM将在内部自行调用它。因此,从技术上讲,如果要使用完整的异步/延迟实现,则甚至不需要在网站上包含Footer脚本。
请注意,要实现完全异步/延迟的DTM实现,意味着您必须确保通过DTM部署的所有也是异步的。我不知道您通过DTM部署了什么,但是实际上,至少可以肯定地说,您至少可以通过DTM部署Experience Cloud ID服务(ECIDS)和Adobe Analytics(AA),并且DTM当前不支持部署这些。以异步方式(需要在AA之前加载ECIDS)。这只是一个 标签/工具示例。
因此,至少,您可能至少应该尊重Header标签的文档。但是,如果确保只在DOM就绪/异步上部署东西,则Footer标记对于其他几乎所有其他东西来说都是宽容的/可行的。 但是,再次正式地,您应该同时遵循两者的说明文件,这是我的正式答案。
替代...
您应该考虑从Adobe DTM迁移到Adobe Launch。 Launch是Adobe最新的标签管理解决方案。 DTM正在逐步淘汰。可以使用与DTM相同的Header和Footer标签来部署Launch,可以在其中强制计时,但是与DTM不同,Launch还具有官方的异步部署选项。可以异步加载Header标签,并且没有Footer标签(用于异步部署)。 Launch做一些魔术,以确保Adobe工具的操作顺序(例如,上面提到的ECIDS与AA)。在工作中,还存在对通过Launch部署的其他标签的承诺链支持。
唯一的症结在于您是否使用Adobe Target。 Target确实有一个异步库版本,但是大多数人都避免使用它,因为它与UX的基本工作原理不一致。即,异步将在加载时引起“闪烁”效果,因为默认页面内容已删除并且浏览器正在等待响应以将其加载。糟糕的UX会损害AB / MV测试工作的完整性,因此人们通常对此表示反对。因此,如果您使用Target或总体上计划进行AB / MV测试,则应坚持正常部署。但这一切都与您最初的问题有所牵连。