Мой веб-сайт постоянно дает сбой IE, не удается выполнить отладку

У меня есть веб-сайт, на котором внезапно произошел сбой Internet Explorer.

Веб-сайт загружается и запускает выполнение javascript, но где-то там взрывается оборудование. Я даже не получаю ошибку скрипта, просто вылетает. Я пытался вручную просмотреть каждую строку js с помощью встроенного отладчика, но тогда, конечно же, проблемы не возникло.

Если я выберу отладку приложения, когда оно выйдет из строя, я вижу следующее сообщение.

Необработанное исключение в 0x6c5dedf5 в iexplore.exe: 0xC0000005: [Фреймы ниже могут быть неправильными и / или отсутствовать, символы для VGX.dll не загружены]
VGX.dll! 6c594d70 ()
VGX.dll! 6c594f63 ()
VGX.dll! 6c595350 ()
VGX.dll! 6c58f5e3 ()
mshtml.dll! 6f88dd17 ()

VGX.dll кажется частью средства визуализации vml, и я фактически использую VML. Я не удивлен, потому что у меня было так много проблем с vml, атрибуты должны быть установлены в определенном порядке, иногда вы не можете установить атрибуты, когда у вас есть элементы, прикрепленные к dom, или наоборот (все недокументированное btw), но тогда проблемы обычно можно воспроизвести при отладке, но не сейчас: (

Проблема также возникает в режиме без плагинов.

Есть ли лучший подход, чем метод проб и ошибок, для решения этой проблемы?

Изменить: Добавление консоли, выводящей все подозрительные изменения в DOM, приводило к тому, что проблема возникала только иногда. (консоль также реализована на javascript на той же странице, я могу видеть вывод даже после сбоя, поскольку окно все еще видно) По-видимому, это какое-то состояние гонки.

Мне удалось отследить это еще больше, и кажется, что это происходит, когда вы слишком быстро удаляете объект из DOM после того, как он только что был добавлен. (скорее всего, только для vml-элементов с каким-то специальным атрибутом, дальше не пробовал) И это нельзя исправить, добавив мертвый цикл перед removeChild (все равно довольно плохое решение), страницу нужно отрендерить браузер один раз после addChild, прежде чем вы сможете вызвать removeChild. sigh

7
задан Ninja rhino 18 October 2010 в 11:50
поделиться