私はこのトラッキングのスニペットを持っています "addToCart.gif"をクリックするたびに4回呼び出すのはなぜですか? 私はそれぞれの場合に "console.log()"を追加しました - そしてそれがループしていることに気付きました。JavaScriptと無限ループ
これは、関数が終了する前に同じ関数を呼び出しているためですか? これを行うには良い方法がありますか?アドバイスできますか?
ありがとうございました!
<script type="text/javascript">// <![CDATA[
var href = location.href
if(href != "" && href.indexOf("/product/") > 0){
mboxDefine("clicked-addToCart","clicked-addToCart")
var count=0;
function addToCartClickTracking(){
if(typeof jQuery == 'function' && jQuery(".add-to-cart[src*='addToCart.gif']").length > 0 && count < 10){
console.log("adding click tracking")
jQuery(".add-to-cart[src*='addToCart.gif']").click(function(){
mboxUpdate("clicked-addToCart")
});
count=10;
} else {
console.log("trying again")
count++;
setTimeout(addToCartClickTracking,400);
}
}
addToCartClickTracking();
}
// ]]>
</script>
ループでは、代わりに 'count <= 10 'です。 –
"関数が終了する前に"同じ関数を呼び出すのではなく、setTimeout()を使って同じ関数への将来の呼び出しをキューに入れます。 else caseには擬似ループを停止する条件がないので、if条件が満たされないと、elseは永遠に起こり続けます。 – nnnnnn
クリックイベントハンドラを追加する前にjQueryが読み込まれるまで待つのですか?これは悪い考えのようです。 –