Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>This is just a guess but I suspect your problem is coming from line 53 of the DOMImplTrident.isOrHasChildImpl method.</p> <pre><code>return (parent === child) || parent.contains(child); </code></pre> <p>I am further guessing that you are encountering your errors on IE10? The reason I think you are running against IE10 is because GWT doesn't officially support IE10 with a separate DOM implementation. It would end up using the DOMImplIE9 implementation on IE10 which in turn uses the above method from DOMImplTrident for its 'isOrHasChild' implementation. I am wondering if line 47</p> <pre><code>if (parent.nodeType == 9) { </code></pre> <p>isn't actually returning 9 for the document node and thereby dropping into the 'else' statement for a document node and blowing up when it tries to access the 'contains' method. Perhaps IE10 doesn't implement those node methods the same as previous versions of IE? Not sure.</p> <p>I don't have IE10 handy to test this theory out but that might be a good place to start. You could create your own JSNI method that makes similar node calls to test the theory and see if 'document.nodeType' does indeed return 9 or if 'node.contains' blows up on various types of nodes.</p> <p>If that does turn out to be the problem. You could try a couple of things to fix/avoid the problem.</p> <ol> <li><p>Try hooking up an GWT.setUncaughtExceptionHandler() in your entry point and just ignore the error altogether.</p></li> <li><p>Stick a try/catch around the block of code in one of 'your' methods that is invoking the problem code and ignore the exception.</p></li> <li><p>Try adding the following meta tag to your html file and see if rendering in IE10 as IE9 solves the problem.</p> <pre><code>&lt;meta http-equiv="X-UA-Compatible" content="IE=9" /&gt; </code></pre></li> <li><p>Create a custom DOMImpl that extends DOMImplIE9 and overrides the 'isOrHasChild' method with your own custom method where you have control over what happens. For example</p> <pre><code>package com.google.gwt.dom.client; public class DOMImplIE9Custom extends DOMImplIE9 { @Override public boolean isOrHasChild(Node parent, Node child) { // Do your own thing } } </code></pre></li> </ol> <p>Then you use deferred binding to switch out the DOMImplIE9 with your custom implementation like so:</p> <pre><code>&lt;replace-with class="com.google.gwt.dom.client.DOMImplIE9Custom"&gt; &lt;when-type-is class="com.google.gwt.dom.client.DOMImpl"/&gt; &lt;when-property-is name="user.agent" value="ie9"/&gt; &lt;/replace-with&gt; </code></pre> <p>Even if I am way off base and you aren't using IE10 you could still try the above ideas to work around the issue. Either that or do the ultimate fix and stop using IE altogether and avoid many hours of stress :) Hope that helps get you on the right track at least.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload