我们正在使用https://www.google.com/recaptcha/api.js整合google recaptcha。这个脚本里面有var。我们的sitecatalyst.js文件中还有一个全局变量。
我们遇到了一个问题,即在加载google recaptcha之后,sitecatalyst.js的var被api.js的var覆盖。
当调用sitecatalyst的var s方法时,我们得到了未定义的方法。
我们如何解决这一冲突?
答案 0 :(得分:1)
首先请注意,您使用Adobe Analytics(AA)时遇到的s
命名空间冲突不是来自google recaptcha api.js脚本。其中使用的s
命名空间在匿名函数中包含并声明,因此其范围仅在该匿名函数内。所以,这不是覆盖你的AA s
对象的东西;看别处。
但总的来说,首先要避免这种情况发生......是的,Adobe Analytics默认使用全局s
(window.s
)命名空间。
根据您的库版本,您应该在代码中看到如下内容:
var s = s_gi('some value');
或者这个:
var s = new AppMeasurement()
;
您可以在此处更改主AA对象命名空间。
您还需要将引用更新到代码中其他位置的s
命名空间。首先,如果您使用的是任何AA插件(例如s.getQueryParam
,s.getValOnce
等),则需要更新它们以引用新的命名空间。注意:您只需要更新声明的插件的命名空间,而不是更新其中的代码。其中的大多数插件在其开头都有类似var s=this;
的内容,请勿更改此。这是在插件本身范围内,类似于我上面提到的google api.js脚本。
您需要确保在您设置AA变量的任何地方更新它,例如页面自定义变量,s.t()
页面查看调用等。
由于您在讨论js文件中的库,听起来您还没有迁移到Adobe Dynamic Tag Manager(DTM)或其他标记管理器。如果是这种情况,并且您想要更改命名空间(您应该,以避免命名空间冲突),那么我建议将此作为迁移到标记管理器的机会。
此外,如果您要执行此操作并且不在最新的AppMeasurement库中(特别是如果您使用的是旧版H代码,如果您仍然自己托管AA lib文件,这很可能),我建议将其用作有机会更新您的代码库。