2014-09-22 7 views
8

Ich mag einen jQuery Animation -Rückrufmethode Fortschritt oder Schritt implementieren,jQuery Animation Setup Rückruf werfen Fehler

aber in jedem Fall erhalte ich folgende Fehlermeldung:

NS_ERROR_IN_PROGRESS: Component returned failure code: 0x804b000f (NS_ERROR_IN_PROGRESS) [nsICacheEntry.dataSize] 

ich viel gesucht, aber Ich bin nicht in der Lage, etwas im Kontext zu finden, ich bleibe irgendwie hier stecken, bitte schlagen Sie vor, was könnte diesen Fehler verursachen?

In Geige habe ich versucht mit Schritt und Fortschritt und seine Arbeit dort, aber nicht in der Lage, es in meinem Code funktioniert, ich bin nur auf der Suche, hat jemand solche Art von Fehler in jquery Animation konfrontiert?

Der Beispielcode ist:

this.taskHandle.find('img').stop(true, true).animate({ 
     //todo// 
     top: vtop, // this.taskHandle.outerHeight(), 
     //'top': 0 - $('.target.upper').height(), 
     width: 0, 
     opacity: 0 
    }, { 
     duration: 2000, 
     step: function(){ 
      console.log('I am called'); 
     } 
    }, 

    $.proxy(function() { 
     // some css clearing method 
    }, { 
     // some further actions after animation completes 
    }) 
); 
+0

Welche jQuery-Version haben Sie in Ihrer Produktionsumgebung ersetzen müssen verwenden? – GuyT

+0

Laut der Fehlermeldung und einigen herumschnüffeln im Quellcode von Firefox, ist dies ein Problem mit einem zwischengespeicherten Element, das noch nicht fertig geladen/geschrieben wurde. Nichts im geposteten Code weist darauf hin, dass Sie Ressourcen verwenden, die möglicherweise nicht geladen wurden. Daher denke ich, dass wir Ihnen nur weiterhelfen können, wenn wir etwas mehr von dem Code sehen. – Falle1234

+0

Ist dies eine iOS-Anwendung? – SnareChops

Antwort

3

Sie haben einige semantische Fehler hier geht. Ich werde den Code umbuchen, zum leichteren Lesen formatiert:

this.taskHandle.find('img') 
    .stop(true, true) 
    .animate(
     { 
      //todo// 
      top: vtop , // this.taskHandle.outerHeight(), 
      //'top' : 0 - $('.target.upper').height(), 
      width : 0, 
      opacity : 0 
     }, 
     { 
      duration:2000, 
      step: function() { 
       console.log('I am called'); 
      } 
     }, 
     $.proxy(
      function() { 
       // some css clearing method 
      }, 
      { 
       // some further actions after animation completes 
      } 
     ) 
    ); 

Erstens: animate() nicht akzeptiert 3 Parameter (zumindest nicht diese drei Parameter). Ich bin mir nicht sicher, was Sie mit Ihrer css clearing method zu tun versuchen, aber alles, was Sie nach Abschluss der Animation passieren könnten, sollte in der complete Methode sein, die Sie direkt neben der step Methode hinzufügen.

Zweitens: $.proxy() muss den Kontext haben, in dem Sie möchten, dass es als zweiter Parameter ausgeführt wird, nicht irgendeine andere "complete" -Funktion.

Also hier ist ein leicht abgewandeltes Beispiel, das funktioniert. Sie können es selbst in this fiddle versuchen.

var vtop = 100; 

$('div') 
    .stop(true, true) 
    .animate(
     { 
      top: vtop, 
      width: 0, 
      opacity : 0 
     }, 
     { 
      duration: 2000, 
      step: function() { 
       console.log('I am called'); 
      }, 
      complete: function() { 
       alert('complete');// some further actions after animation completes 
      } 
     } 
    ); 
+0

Der obige Code ist der laufende Code, also kann ich die $ .proxy() nicht entfernen, $ .proxy() dient lediglich dazu, alle Zielstile zu löschen, die durch die Animation verursacht werden, zB auf die ursprüngliche Breite zurücksetzen, top usw. und das ist in Ordnung, nur Änderung, die ich hier gemacht habe, um den Rückruf Schritt oder Fortschritt zu verwenden. –

+0

Ok. Wenn es funktioniert, dann benutze es auf jeden Fall wie es ist. Wie auch immer, die Fehlercodes, die Sie in Ihrer Frage angeben, sehen für mich nicht wie JavaScript-Fehler aus. Sind Sie sicher, dass Ihr Problem nicht woanders ist? –

+0

Die Sache ist, ich musste Animationseffekt manipulieren, wie das Ziel animiert, deshalb muss ich Schritt oder Fortschritt verwenden, aber sobald ich Schritt- oder Fortschrittsrückrufmethode schreibe, wirft es mich diesen Fehler und sogar es fängt Callbackmethodenblock ein, –

1

Sie könnten Julian Shapiro Ilses Velocity.js, die Animationen sind (diskutierbar) schneller als jQuery und CSS (read this für mehr)

Es ermöglicht Ihnen, Rückrufe zu verwenden, wie zum Beispiel:

  • beginnen
  • Fortschritt
  • komplett

wie:

var vtop = 100; 
jQuery(document).ready(function ($) { 
    $('div').find("img").velocity({ 
     top: vtop, 
     width: 0, 
     opacity: 0 
    }, { 
     duration: 2000, 
     begin: function (elements) { 
      console.log('begin'); 
     }, 
     progress: function (elements, percentComplete, timeRemaining, timeStart) { 
      $("#log").html("<p>Progress: " + (percentComplete * 100) + "% - " + timeRemaining + "ms remaining!</p>"); 
     }, 
     complete: function (elements) { 
      // some further actions after animation completes 
      console.log('completed'); 
      $.proxy(...); // some css clearing method 
     } 
    }); 
}); // ready 

Hinweis, die Sie gerade .animate() von .velocity()

Siehe JSFIDDLE