[ 
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

Reply via email to