Это только предположение, но я подозреваю, что ваша проблема исходит от строка 53 метода DOMImplTrident.isOrHasChildImpl.
return (parent === child) || parent.contains(child);
Я также предполагаю, что вы столкнулись с вашими ошибками в IE10? Причина, по которой я думаю, что вы работаете против IE10, заключается в том, что GWT официально не поддерживает IE10 с отдельной реализацией DOM. В итоге он будет использовать реализацию DOMImplIE9 в IE10, которая, в свою очередь, использует вышеуказанный метод из DOMImplTrident для реализации 'isOrHasChild'. Мне интересно, если строка 47
if (parent.nodeType == 9) {
не на самом деле возвращение 9 для узла документа и тем самым снижаются в «другое» заявление для узла документа и взрывать, когда он пытается получить доступ к «содержит» метод. Возможно, IE10 не реализует эти методы узлов так же, как предыдущие версии IE? Не уверен.
У меня нет IE10 для проверки этой теории, но это может быть хорошим местом для начала. Вы можете создать свой собственный метод JSNI, который делает подобные вызовы узлов проверять теорию и видеть, действительно ли document.nodeType возвращает 9 или если «node.contains» взрывается на разных типах узлов.
Если это действительно проблема. Вы можете попробовать несколько вещей, чтобы исправить/избежать проблемы.
Постарайся подключения к GWT.setUncaughtExceptionHandler() в точке входа и просто игнорировать ошибку в целом.
Вставьте попытку/поймать блок кода в одном из ваших методов, который вызывает код проблемы и игнорирует исключение.
Попробуйте добавить следующий метатег в ваш 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 в целом и избежать многих часов стресса :) Надеюсь, что поможет вам на правильном пути, по крайней мере.
Любая конкретная версия IE? –
Вы можете скомпилировать с режимом DETAILED и добавить обработчик исключений в ваше приложение и распечатать stacktrace, чтобы узнать, откуда эта проблема. –
Я использую IE версии 9. Он работает в версии 8. –