首先需要注意的是,不管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