首先需要注意的是,不管s
命名空间与Adobe Analytics(AA)的冲突如何,都不是来自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动态卷标管理器(DTM)或其他标记经理。如果是这种情况,并且您想要更改命名空间(您应该避免命名空间冲突),那么我建议使用此作为迁移到标签管理器的机会。如果你打算这样做,而不是最新的AppMeasurement库(特别是如果你使用的是旧H代码,如果你仍然自己托管AA lib文件的话很可能),我推荐使用这个作为更新您的代码库的机会。
感谢您的答复蜡笔小新。我知道,谷歌recaptcha的是在ananymous功能,因此不应该产生任何问题,但只要我们停止加载谷歌recaptcha api.js代码,我们没有得到任何错误。 – user6896902
这就是我们如何做的。我们在var s = s_gi('some value');主页上加载sitecatalyst.js。然后,在主页面加载完成后,我们给ajax调用以获取其他页面的内容,该页面包含google recaptcha代码,并使用从ajax调用收到的html更新主页面中的div。之后,如果我们添加事件,我们得到s.apl不是一个函数。 – user6896902