2017-04-07 7 views
1

私は変換テストのためにGoogle Optimizeを試してみることにしました。他のツールと同じように、JavaScriptを使ってスワップします。JavaScriptがFirefoxでトラッキング保護を有効にしているかどうかを確認できますか?

flickeryの動作を避けるために、不透明度を設定するスクリプトを追加することをおすすめします。どちらか

  • までページ全体のためにGoogleアナリティクスからのコールバックはそのページの変更がタイムアウトがヒットした
  • (4000msデフォルト)を完了した合図するために到着しました。

コールバックは、analytics.jsが実行されます。

Firefoxでトラッキング保護が有効になっていると、Googleアナリティクスがブロックされ、コールバックが到着しません。したがって、追跡保護機能のユーザーは、すべてのページロードで4000ミリ秒のグレースクリーンで挨拶され、決して来ないGAからのコールバックを待っています。これは明らかに望ましいものではありません。

これで、Analyticsがブロックされているユーザーのためにグレーススクリーンを完全に削除したいと思います。しかし、私は、ブラウザが、のアナリティクスを読み込むことができるかどうかを評価できる条件を考え出すことに幸運はありませんでした。これを事前に伝える方法はありますか?

解決策は、analytics.jsのコードのチェックに基づいているか、タイムアウトがあるかどうかに基づいている可能性があります。これらは私が回避しようとしているものです。

+0

"しかし、ブラウザがアナリティクスの読み込みを許可するかどうかを評価できる条件が出てきているわけではありません。これを事前に伝える方法はありますか?読み込みに失敗した場合にコールバックを行う能力は十分でしょうか? –

+0

これは、コールバックがどのくらい速く実行されるかによって異なります。最適なのは、残りのページが読み込まれる前にすべてが完了することです。 – user2340243

答えて

1

これを事前に伝える方法はありますか?

種類はありますが、それは厄介です。トラッキング保護によってブロックされたドメインに対してハニーポットリクエストを行い、それが例外または空のレスポンスボディを返すかどうかを確認する必要があります(一部のブロッカーは空の広告/アナリティクススクリプトを返すほどスマートです)。そうであれば、ブラウザーが特定の要求を通過していないことを「早期」に伝え、レンダー遅延を短絡させることができます。

他のリクエスト(イメージ、広告アセット、スクリプト)がHTTPリソースプールを消費せず、タイムリーにリクエストの完了(または失敗)をロックしないようにできるだけ早くこのリクエストを送信する必要があります。

「.advert」のようなクラスを持つ要素を作成し、それをDOMに挿入し、フレームの時間内にdisplay-noneが指定されているかどうかを確認することで、同期する方法で汎用のブロックブラーをテストすることもできます。これはまだ非同期ですが、より信頼性の高いものになります。

これはまだ理想的ではありませんが、今は誤認をおそらく感じるでしょう。 DOMの変更を伴うA/Bテストは、面倒なサイドローディングスクリプトではなく、サーバー側から実行する必要があります。

1

エラーハンドラを追加するためにページに追加するトラッキングスニペットを少し修正することで、Googleアナリティクスがブロックされたかどうかを検出することができます。

スニペットでは、a.async=1;の後に、a.onerror=i.gaFailedToLoad;などを追加します。これにより、Googleアナリティクスが完全にブロックされた時点で機能window.gaFailedToLoadが実行されます。

これは、解析リクエストを中立バージョンに置き換えるuBlock Originなどのより高度なブロッカでは実行されません。

関連する問題