You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cordova.apache.org by "Patrick Mueller (JIRA)" <ji...@apache.org> on 2012/10/17 15:26:03 UTC
[jira] [Commented] (CB-1666) [weinre] "INVALID_STATE_ERR: DOM
Exception 11" with chbrody/Cordova-SQLitePlugin
[ https://issues.apache.org/jira/browse/CB-1666?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13477880#comment-13477880 ]
Patrick Mueller commented on CB-1666:
-------------------------------------
Couple of q's:
- what version of Cordova are you using?
- what version of iOS are you using? Does it do the same thing on other versions of iOS?
- wanted to double-check that this error message is just spurious, and shouldn't be displayed, but is not hindering your app in any way.
Looking at the code, I honestly can't see how this is even happening, at least with the current level of Cordova code. It seems like the XHR in question must be a "/!gap" XHR request, as part of the exec() impl [1], but ... it doesn't add any handlers, and so I don't see how it could "close" (or something) the XHR.
I suppose it may be related to accessing the XHR responseText attribute if it's "not text" or something [2]. It would be nice to know if that's ALL we had to wrap, but ... this all seems so sketchy, it seems like wider-ranging try/catch would be safer.
Seems like the safest thing to do is to put a try/catch around the getXhrEventHandler() function in NetworkRequest [3]. This may result in some XHR requests in weinre as not being complete, but there were going to be SOME KIND of problem with such requests anyway, apparently :-)
I've seen some seemingly spurious but innocuous "INVALID_STATE_ERR: DOM Exception blah blah" messages before, but never nailed down where they were coming from. Hopefully this will get rid of some/most/all of them!
Thoughts?
[1] https://github.com/apache/incubator-cordova-js/blob/master/lib/ios/exec.js#L124
[2] http://www.w3.org/TR/XMLHttpRequest/#the-responsetext-attribute
[3] https://github.com/apache/incubator-cordova-weinre/blob/master/weinre.web/modules/weinre/target/NetworkRequest.coffee#L189
> [weinre] "INVALID_STATE_ERR: DOM Exception 11" with chbrody/Cordova-SQLitePlugin
> --------------------------------------------------------------------------------
>
> Key: CB-1666
> URL: https://issues.apache.org/jira/browse/CB-1666
> Project: Apache Cordova
> Issue Type: Bug
> Components: weinre
> Affects Versions: 2.1.0
> Environment: OS X Lion 10.7.4, Google Chrome 22.0.1229.94, iOS6 iPhone Simulator
> Reporter: Christiaan van Zyl
> Assignee: Patrick Mueller
>
> When using weinre with Cordova-SQLitePlugin we get a javascript error:
> "INVALID_STATE_ERR: DOM Exception 11: An attempt was made to use an object that is not, or is no longer, usable. File: http://192.168.1.169:1337/target/target-script-min.js?_=1350463351336 Line Number: 2794"
> Above line number corresponds to the function NetworkRequest.prototype.handleDone in target-script-min.js.
> As a work around I have just wrapped a try catch and made it fail silently:
> NetworkRequest.prototype.handleDone = function() {
> try {
> var description, sourceString, status, statusText, success, time;
> sourceString = this.xhr.responseText;
> Weinre.wi.NetworkNotify.setInitialContent(this.id, sourceString, "XHR");
> time = Date.now() / 1000.0;
> status = this.xhr.status;
> if (status === 0) {
> status = 200;
> }
> statusText = this.xhr.statusText;
> success = status >= 200 && status < 300;
> if (success) {
> return Weinre.wi.NetworkNotify.didFinishLoading(this.id, time);
> } else {
> description = "" + status + " - " + statusText;
> return Weinre.wi.NetworkNotify.didFailLoading(this.id, time, description);
> }
> } catch (e) {
> return;
> }
> };
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira