6

ボタンのクリックを追跡し、ミックスパネルに分析を記録する次のコードブロックがあります。

<script type="text/javascript">
$('.buy').click(function() {
   var myPart = $('#part-name').text();
   var myDistributor = $(this).closest('tr').children('.distributor').text();
   mixpanel.track("Buy Part Link", {"PartName": myPart, "Distributor": myDistributor});
});
</script>

それ自体では、アクティビティはMixPanelで追跡されていません。ただし、alert ('added');ミックスパネルのトラッキングコードの下に追加すると、突然完全に機能します。

なんで?

更新:何人かの人々が尋ねたので、アラートはmixpanel.trackコマンドの下に置かれました。

4

1 に答える 1

12

aタグを使用していて、スクリプトが機能する前にページが更新されているためか、推測して言います。

event.preventDefaultそのための解決策は、次のように関数で使用することです。

$('.buy').click(function(event) {
    event.preventDefault();
    //the rest of your code
});

デフォルトでは、タグは通常、(属性aに基づいて)新しいページに移動します。hrefnohrefが設定されている場合、通常は現在のページをリロードします。これは、preventDefault機能に気付いていないほとんどの人によく見られる見落としです。ただし、この行を追加すると、リンクがどこにも移動できなくなります。

@Esailijaが言ったように、クリック関数内のすべてのコードが同期して実行される場合、ページナビゲーションの前に正常に完了します。これは、その一部(ほとんどの場合.track呼び出しのような)が非同期で実行されていることを示しています。たとえば、ajax呼び出し。

一般に、アラートでコードが修正されることがわかった場合は、何かが完了するのに十分な時間がないことが原因である可能性があります。したがって、常にスクリプトを終了するものを探してください。これはおそらく(この場合は)ページのリロード/更新です。

これが問題ではない場合は、さらに役立つようにHTMLの一部を確認する必要がある場合があります。


あなたがまだナビゲートしたいというあなたのコメントのために、私は非常に迅速なグーグル検索をしました、そしてドキュメントはリンクを扱う方法をあなたに教えます。このページを見て、関数まで少し下にスクロールしmixpanel.track_linksます。

于 2013-03-14T18:00:29.797 に答える