我正在从静态实现迁移到Adobe DTM。有某些页面级代码,例如,s.prop14 = 文章名称。但是现在当我给出DTM的引用时,页面级代码没有触发,我在控制台中得到了错误对象" s"没有定义。
解决方案是什么?
谢谢!
答案 0 :(得分:4)
默认情况下,DTM不会将s
对象(或您在配置中指定的任何其他命名空间)放在全局(window
)范围内,并且DTM本身不允许您这样做。您将不得不更新您的工具配置以自行完成,顺便说一句,这也意味着您必须自己维护核心库,而不是使用“由Adobe管理”功能,以绕过DTM尝试自动执行此操作
在图书馆管理> 代码配置部分,选择自定义并选中使用下面的自定义代码设置报告套件。然后,您需要将文件库“在DTM中”(单击“打开编辑器”并将其复制/粘贴到那里)或“在URL”(自己托管文件)。在顶部(无论是在编辑器中还是在文件中),您需要在窗口命名空间下实例化该对象。 AppMeasurement示例:
window.s = new AppMeasurement();
或者,您可以按原样保留设置,稍微更改页面上的语法,然后向DTM添加一些代码以查找它。例如,在您的页面自定义代码上方,只需执行
var s = {};
s.prop1 = 'foobar';
//etc..
然后在DTM中,在相同的代码编辑器中(或者在DTM中的许多地方你可以做到这一点),你可以这样做:
for (var v in window.s) {
s[v] = window.s[v];
}