将我的GWT版本升级到2.5.0后,我将鼠标悬停在图表(SVG)上时出现问题。对象不支持此属性或方法
该问题仅出现在IE中(Chrome和Firefox未受影响)。
该消息是
2异常捕获:(类型错误)描述:对象不支持 属性或方法“包含”数:-2146827850:对象不 支持属性或方法“包含“;
该问题似乎是由DOMImplTrident
类中称为isOrHasChildImpl
的新方法造成的。
我想知道有没有其他人满足周围的工作比不使用IE之外的这个问题或知道;)
感谢
将我的GWT版本升级到2.5.0后,我将鼠标悬停在图表(SVG)上时出现问题。对象不支持此属性或方法
该问题仅出现在IE中(Chrome和Firefox未受影响)。
该消息是
2异常捕获:(类型错误)描述:对象不支持 属性或方法“包含”数:-2146827850:对象不 支持属性或方法“包含“;
该问题似乎是由DOMImplTrident
类中称为isOrHasChildImpl
的新方法造成的。
我想知道有没有其他人满足周围的工作比不使用IE之外的这个问题或知道;)
感谢
这只是一个猜测,但我怀疑你的问题的根源DOMImplTrident.isOrHasChildImpl方法的第53行。
return (parent === child) || parent.contains(child);
我进一步猜测你在IE10上遇到你的错误?我认为你对IE10运行的原因是因为GWT并没有正式支持IE10和单独的DOM实现。它最终将在IE10上使用DOMImplIE9实现,该实现继而使用DOMImplTrident中的上述方法实现其“isOrHasChild”。我想知道如果线47
if (parent.nodeType == 9) {
实际上没有返回9文档节点,从而落入“别人的语句为一个文件节点并炸毁当它试图访问“包含”方法。也许IE10没有实现与以前版本的IE相同的那些节点方法?不确定。
我没有IE10方便测试这个理论,但这可能是一个很好的开始。您可以创建您自己的JSNI方法,该方法使类似的节点调用来测试理论,并查看'document.nodeType'是否确实返回9或者'node.contains'是否在各种类型的节点上爆炸。
如果这确实是问题所在。你可以尝试几件事来解决/避免这个问题。
尝试在您的入口点连接一个GWT.setUncaughtExceptionHandler(),并完全忽略该错误。
围绕调用问题代码的'your'方法之一的代码块附加try/catch,并忽略异常。
尝试将以下元标记添加到您的html文件中,并查看在IE10中是否呈现为IE9来解决问题。
<meta http-equiv="X-UA-Compatible" content="IE=9" />
创建一个自定义DOMImpl延伸DOMImplIE9并覆盖“isOrHasChild”法,你必须在发生什么控制自己的自定义方法。例如
package com.google.gwt.dom.client;
public class DOMImplIE9Custom extends DOMImplIE9 {
@Override
public boolean isOrHasChild(Node parent, Node child) {
// Do your own thing
}
}
然后使用延迟绑定像这样与你的自定义实现切换出DOMImplIE9:
即使我大错特错,你没有使用IE10你仍然可以尝试上述想法来解决这个问题。要么这样做,要么做最终修复,并完全停止使用IE,并避免很多小时的压力:)希望能帮助你至少走上正确的轨道。
'GWT.setUncaughtExceptionHandler()'已经发现了异常,看起来好像它会做的伎俩。谢谢。 –
在我的情况下,第三点是IE 11上例外的原因... – cybersoft
任何特定版本的IE? –
您可以使用DETAILED模式编译并向您的应用程序添加异常处理程序,并打印堆栈跟踪以查看问题来自何处。 –
我正在使用IE版本9.它在版本8中工作。 –