2017-09-13 19 views
0

https://www.google.com/recaptcha/api.jsを使用してGoogleのrecaptchaを統合しています。このスクリプトにはvar sが含まれています。 sitecatalyst.jsファイルのグローバル変数もあります。google recaptcha api.js var sの問題

google recaptchaを読み込んだ後、sitecatalyst.jsのvarがapi.jsのvarによって上書きされる問題が発生しました

sitecatalystのvar sのメソッドを呼び出すときに、未定義のメソッドを取得します。

この競合をどのように解決できますか?

答えて

1

まず、Googleのrecaptcha api.jsスクリプトではなく、sの名前空間がAdobe Analytics(AA)と矛盾していることに注意してください。その中で使われている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)やその他のタグに移行していないようですマネージャー。その場合、名前空間を変更するには(名前空間の競合を避けるために)、これをタグマネージャーに移行する機会として使用することをお勧めします。

また、これを行い、最新のAppMeasurementライブラリにない場合(特にAAのlibファイルを自分でホストしている場合は、おそらくレガシーHコードを使用している場合)、これを使用することをお勧めしますあなたのコードライブラリを更新する機会として。

+0

返信ありがとうクレヨン。私は、Googleのrecaptchaはananymous関数の下にあるので、任意の問題を作成する必要はありませんが、私たちはGoogleのrecaptcha api.jsコードの読み込みを停止するとすぐに、私たちはエラーが発生しない知っている。 – user6896902

+0

これは私たちがやっていることです。 sitecatalyst.jsをvar s = s_gi( 'some value');というメインページに読み込みます。その後、メインページが読み込まれた後、私たちはajax呼び出しを行い、別のページのコンテンツを取得します。このページには、Googleのrecaptchaコードがあり、メインページのdivをajax呼び出しから受け取ったhtmlで更新します。その後、イベントを追加すると、s.aplは関数ではありません。 – user6896902

関連する問題