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