2011-06-24 6 views
1

私は誰かがこれを手伝ってくれることを願っています。私は私のページのFirebugに奇妙なエラーが出てきた。jQuery Animation error =クリアスコープでコンパイルアンドゴースクリプトを実行しようとしました

私は、コードを使用しています:

$(function() { 
var element = $("#finger"); 
(function(){ 
    element 
     .animate({ marginLeft: 130 }, 1000) 
     .animate({ marginLeft: 100 }, 1000 , arguments.callee); 
}()); 
}); 

これは私の '指' をアニメーション化するために正常に動作します。

は、私はまた、この他のコードを持っている:

$("SOME-OTHER-DIV").mousedown(function() { 
    $("#finger").hide(); 
}); 

上のクリックしたときにこれは私の「指」非表示になります。私はこのエラー

を取得することにより、私はページをリロードするとき

さて、これはすべてが正常に動作します....アップポイントまで

「クリアスコープに行くコンパイルとスクリプトを実行しようとします」

まだ、アニメーションはまだ機能していて、mousedownもまだ動作しています。

ここで何が起こっているのですか? Firefoxのバグですか?事前 で 感謝クリス

----------更新---------

うーん、おそらくそれが問題を引き起こしている「arguments.calleeを」ではありません。私はにコードを変更:3回をループ

$(function() { 
i = 0; 
while(i < 3){ 
$("#finger").animate({ marginLeft: 130 }, 1000).animate({ marginLeft: 100 }, 1000); 
i++; 
} 
}); 

(OK、無限ではないが、それは単なる例のためです)、私はまだ「クリアスコープに行くコンパイルとスクリプトを実行しようとする試み」を取得しますFirebugのページリロードでエラーが発生しました:-S

+0

私はアニメーション[lol](http://jsfiddle.net/SJ7CC/)が好きで、そのページにいったん戻って(IE8で)クリックします。 :P – Lobo

+0

ありがたいことにこのプロジェクトで私はIE \ o/ – Chris

答えて

1

arguments.calleeが原因である可能性があります。私は、すべてのJSエンジンが完全にサポートされているわけではない、ファンキーなトリッキーなことをしていると思います。

+0

をサポートする必要はありません。問題を引き起こしている "arguments.callee"と思われます。"arguments.callee"を使用せずにこのアニメーションをループする方法はありますか? – Chris

-3

Firefoxです。キャッシュを無効にすると、エラーはおそらくポップアップしません。程度で

:設定セット:

network.http.use-cache = false 
+0

本当に役に立ちません。キャッシュを無効にするようにユーザーに頼むことは容認できません。 – ThiefMaster

+0

うわー。キャッシュを無効にするようユーザーに依頼するのは本当に受け入れられません。D – genesis

2

これは、FF4の問題のようです。 thisおよびthisを参照してください。もう1つのスレッドは、キャッシュをクリアしようとしています。

このコードを試してみて、あなたはまだエラーが出るかどうかを確認 - demo

$(function() { 
    animateFinger(); 
    setInterval(animateFinger, 2000); 
    // You can also try function(){setTimeout(animateFinger, 0)} as a callback method instead of setInterval 
}); 

$("#abc").mousedown(function() { 
    $("#finger").toggle("display"); 
}); 

function animateFinger() { 
    $("#finger").animate({ 
     marginLeft: 130 
    }, 1000).animate({ 
     marginLeft: 0 
    }, 1000); 
} 
- それはすべての2000ミリ秒を setIntervalを使用してメソッドを呼び出すしようと動作しない場合 demo

$(function() { 
    animateFinger(); 
}); 

$("#abc").mousedown(function() { 
    $("#finger").toggle("display"); 
}); 

function animateFinger() { 
    $("#finger").animate({ 
     marginLeft: 130 
    }, 1000).animate({ 
     marginLeft: 0 
    }, 1000, animateFinger); 
} 

あなたの指先を指差すビジネスのすべての最高。 ;)

+0

このコードをお寄せいただきありがとうございます。指を無期限にアニメーション化するための処理を行います。しかし、これらのオプションをすべて試した後、残念ながらリロード時に同じエラーが発生すると言わざるを得ない。 – Chris

関連する問題