2

Piwik トラッカーでは、次のようなカスタム トラッキングが可能です。

jQuery('div.orange').click(function() {
    piwikTracker.trackGoal(3); // Track click on this hitarea
});

私の WordPress 環境では、明らかな理由から、この jQuery を piwik.js スクリプトとは別のスクリプトにロードしています。

Chrome でエラーが表示される

Uncaught ReferenceError: piwikTracker が定義されていません

カスタムトラッキングを使用しているスクリプトで。

イベント ハンドラ関数を呼び出す前に関数を定義する方法はありますか? なぜChromeだけ?

編集

JavaScript をロードする piwik php スクリプトを確認したところ、実際にはフッターにスクリプトがロードされています。カスタム トラッキングを呼び出す関数がヘッダーに読み込まれます。これは問題ですか?ヘッダーのスクリプトは常にフッターの前に読み込まれますか?

4

3 に答える 3

6

非同期追跡は、この問題を洗練された方法で解決します。

var _paq = _paq || [];
_paq.push(['trackGoal', 3]);

piwik が以前にロードされていた場合、これにより自動的にゴール リクエストが送信されます。その後に piwik がロードされた場合、piwik がロードされた後に処理されるのは配列だけです!

非同期追跡の設定方法については、ドキュメントを参照してください。これは、Piwik 1.11 のデフォルトの方法になります。

于 2013-02-25T14:55:37.137 に答える
3

はい。ページ内のどこにスクリプトを配置するかが重要です。ブラウザがページを解釈するとき、最初にヘッドを読み取り、次にボディを読み取ると考えています。あなたの場合、最初に DOMReady とオブジェクト piwikTracker を確認することをお勧めします。

jQuery(document).ready(function() {
    jQuery('div.orange').click(function() {
        if (piwikTracker) {
            piwikTracker.trackGoal(3); // Track click on this hitarea
        }
    });
});
于 2012-06-28T18:59:02.540 に答える
1

コードをreadyハンドラーに入れてみてください:

$(function(){
  jQuery('div.orange').click(function() {
    piwikTracker.trackGoal(3); // Track click on this hitarea
  });
});

または、onload機能するイベント:

window.onload = function() {
  jQuery('div.orange').click(function() {
     piwikTracker.trackGoal(3); // Track click on this hitarea
  });
}
于 2012-06-28T18:49:23.730 に答える