Javascript google recaptcha api.js var s问题

Javascript google recaptcha api.js var s问题,javascript,recaptcha,adobe-analytics,Javascript,Recaptcha,Adobe Analytics,我们正在使用集成GoogleReCAPTCHA。此脚本中有var s。我们在其中一个sitecatalyst.js文件中还有一个全局变量s 我们面临一个问题,在加载google recaptcha后,sitecatalyst.js的var s被api.js的var s覆盖 我们在调用sitecatalyst的var s方法时得到未定义的方法 我们如何解决这一冲突?首先需要注意的是,您与Adobe Analytics(AA)之间存在的任何s命名空间冲突都不是来自google recaptcha a

我们正在使用集成GoogleReCAPTCHA。此脚本中有var s。我们在其中一个sitecatalyst.js文件中还有一个全局变量s

我们面临一个问题,在加载google recaptcha后,sitecatalyst.js的var s被api.js的var s覆盖

我们在调用sitecatalyst的var s方法时得到未定义的方法


我们如何解决这一冲突?

首先需要注意的是,您与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的东西请勿更改此项。这是插件本身的范围,类似于我上面提到的GoogleAPI.js脚本

您需要确保在设置AA变量的任何地方都会更新它,例如在页面自定义变量上,调用页面视图的
s.t()

由于您正在谈论js文件中的库,听起来您还没有迁移到AdobeDynamicTagManager(DTM)或其他标记管理器。如果是这种情况,并且您希望更改名称空间(您应该这样做,以避免名称空间冲突),那么我建议将此作为迁移到标记管理器的机会


另外,如果您打算这样做,但不在最新的AppMeasurement库中(特别是如果您使用的是遗留的H代码,如果您自己仍在托管AA lib文件,这很可能),我建议将此作为更新代码库的机会

谢谢你的回复蜡笔。我知道,google recaptcha的函数名为Anonymous,因此不应该产生任何问题,但一旦我们停止加载google recaptcha api.js代码,就不会出现任何错误。我们就是这样做的。我们在主页上加载sitecatalyst.js,主页上有var s=s_gi('some value');。然后,在加载主页之后,我们发出一个ajax调用,以获取另一个包含google recaptcha代码的页面的内容,并使用从ajax调用接收到的html更新主页中的一个div。之后,如果我们添加事件,我们得到s.apl不是一个函数。