Ошибка анимации jQuery = попытка запустить скрипт compile-and-go в очищенной области - PullRequest
1 голос
/ 25 июня 2011

Я надеюсь, что кто-то может помочь с этим. У меня странная ошибка в Firebug на моей странице.

Я использую код:

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

Это прекрасно работает, чтобы оживить мой «палец».

У меня также есть этот другой код:

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

Это заставляет мой «палец» прятаться при нажатии.

Теперь, все это работает нормально .... до момента, когда я перезагружаю страницу, когда я получаю эту ошибку

"попытка запустить скрипт compile-and-go в очищенной области"

Тем не менее, анимация все еще работает, и mousedown также все еще работает.

Есть идеи, что здесь происходит? Это просто ошибка в Firefox? Спасибо заранее Chris

---------- обновление ---------

Хм, возможно, проблема не в "arguments.callee". Я изменил код на:

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

Который повторяется 3 раза (хорошо, не бесконечно, но это только для примера), и я все еще получаю ошибку «попытка запустить сценарий компиляции и запуска в очищенной области» при перезагрузке страницы в Firebug: -S

Ответы [ 3 ]

2 голосов
/ 25 июня 2011

Это похоже на проблему с FF4. См. это и это . Как говорит другой поток, попробуйте очистить кеш.

Попробуйте этот код и убедитесь, что ошибка все еще появляется - demo

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

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

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

Если это не сработает, попробуйте использовать setInterval и вызывать метод каждые 2000 миллисекунд - 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);
}

Всего наилучшего в вашем бизнесе. ;)

1 голос
/ 25 июня 2011

Я думаю, что arguments.callee может быть причиной. Я думаю, что это делает некоторые хитрые трюки, которые не все движки JS полностью поддерживают.

0 голосов
/ 25 июня 2011

Это Firefox. Если вы отключите кеш, ошибка, скорее всего, не появится.

В о: config set:

network.http.use-cache = false
...