38 votes

INVALID_STATE_ERR: exception DOM 11 (WebKit)

J'ai récemment testé une application Cappuccino sur laquelle je travaillais avec Chrome et Safari. Je reçois l'erreur:

 INVALID_STATE_ERR: DOM Exception 11: An attempt was made to use an object that is not, or is no longer, usable.
 

Le manque d'informations est frustrant. Quel objet et où ai-je essayé de l'utiliser? Chrome essaie de répondre à la deuxième question, mais le numéro de ligne qu'il donne, 465, ne signifie rien lorsque le fichier qu'il donne ne contient que 94 lignes. Sans plus d'informations, je ne sais même pas par où commencer.

62voto

Dave Lampert Points 491

Habituellement, cette erreur se produit avec XMLHttpRequest lorsque vous appelez la méthode ouverte avec async = true, ou si vous laissez le paramètre async non défini pour qu'il soit par défaut asynchrone, puis vous accédez aux propriétés status ou responseText. Ces propriétés ne sont disponibles qu'après avoir effectué un appel synchrone ou lorsque l'état readyState est prêt (une fois que l'appel asynchrone a répondu). Je vous suggère d'essayer d'abord avec async = false, puis de passer à vrai et d'utiliser le onReadyStateChange.

24voto

Jeff Widmer Points 1964

Dans mon cas, je définissais les en-têtes avant d'ouvrir la connexion. Pour éviter cette erreur, les en-têtes doivent être définis après l'ouverture de la connexion:

 var fd = new FormData();
fd.append("fileToUpload", file);
var xhr = new XMLHttpRequest();
xhr.open("POST", postUrl, true);
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(fd);
 

Je comprends que cette réponse est spécifique à mon problème et non au message générique INVALID_STATE_ERR: DOM Exception 11, mais a pensé que je publierais ma solution ici pour la prochaine personne.

9voto

Jamie Pate Points 470

Chrome canary offre des traces de pile pour les exceptions DOM!

5voto

Brian DeRocher Points 41

Cela peut également se produire lorsque Javascript essaie de document.write() dans une page XHTML ( Content-Type: application/xhtml+xml ).

3voto

petteri Points 301

Tout d'abord, je ne sais vraiment rien de Cappucino ni ce que vous essayez de faire. Mais je l'ai vu en travaillant avec Qt WebKit et des objets JavaScript. Cela s'est produit après la suppression de l'objet fenêtre javascript, par exemple si je n'ai pas chargé mes objets JS natifs dans WebKit après le chargement d'une nouvelle page.

Cela signifie essentiellement que vous essayez d'utiliser un objet JavaScript supprimé en interne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X