google recaptcha api.js var s issue



我们正在使用https://www.google.com/recaptcha/api.js整合Google Recaptcha。该脚本中有var s。我们在sitecatalyst.js文件之一中也有一个全局var s。

我们面临着一个问题,即加载Google recaptcha后,SiteCatalyst.js的VAR被api.js的var S覆盖。

调用Sitecatalyst的VAR S的方法时,我们会得到未定义的方法。

我们如何解决这一冲突?

首先要注意,无论您与Adobe Analytics(AA)所遇到的s名称空间冲突,都不来自Google recaptcha api.js脚本。其中使用的s名称空间在匿名函数中已包含并声明,因此其范围仅在该匿名函数内。因此,这不是覆盖您的AA s对象的原因;看别的地方。

,但总的来说,就首先避免这种情况而言。是的,Adobe Analytics默认使用全局swindow.s)名称空间。

根据您的库版本,您应该在代码中看到类似的内容:

var s = s_gi('some value');

或以下:

var s = new AppMeasurement();

这是您可以更改主要AA对象名称空间的地方。

您还需要将参考更新为代码其他位置的s名称空间。首先,如果您使用任何AA插件(例如s.getQueryParams.getValOnce等),则需要更新它们以引用您的新名称空间。注意:您只需要更新已声明的插件的命名空间,而不是内部的代码。其中的大多数插件都在它们的开头,例如var s=this; 请勿更改此。这是在插件本身中范围内的,类似于我上面提到的Google API.JS脚本。

您将需要确保您设置AA变量的其他任何地方都会更新它,例如页面自定义变量,s.t()呼叫页面视图等。

由于您在JS文件中谈论库,因此听起来您尚未迁移到Adobe Dynamic Tag Manager(DTM)或其他一些标签管理器。如果是这种情况,并且您想更改命名空间(您应该避免命名空间冲突),那么我建议将其用作迁移到标签管理器的机会。

另外,如果您要执行此操作并且不在最新的AppMeasemerment库中(尤其是如果您使用Legacy H代码,如果您仍在自己托管AA LIB文件),我建议将其用作更新您的代码库的机会。

最新更新