На моем веб-сайте происходит сбой IE, не удается отладить

У меня есть веб-сайт, на котором внезапно начал вылетать Internet Explorer.Сайт загружается и начинает выполнять javascript, но где-то там взрывается оборудование.Я даже не получаю ошибку скрипта, просто вылетает.Я пытался вручную просмотреть каждую строку js с помощью встроенного отладчика, но тогда, конечно, проблемы не возникало.Если я выберу отладку приложения, когда оно выйдет из строя, я вижу следующее сообщение.Необработанное исключение в 0x6c5dedf5 в iexplore.exe: 0xC0000005: место чтения нарушения прав доступа 0x00000090.Первые 5 элементов в стеке вызовов выглядят такVGX.dll! 6c5dedf5 ()[Фреймы ниже могут быть неправильными и /или отсутствовать, символы для VGX.dll не загружены]VGX.dll! 6c594d70 ()VGX.dll! 6c594f63 ()VGX.dll! 6c595350 ()VGX.dll! 6c58f5e3 ()mshtml.dll! 6f88dd17 ()VGX.dll, кажется, является частью средства визуализации vml, и я фактически использую VML.Я не удивлен, потому что у меня было так много проблем с vml, атрибуты должны быть установлены в определенном порядке, иногда вы не можете установить атрибуты, когда у вас есть элементы, прикрепленные к dom, или наоборот (все недокументированное, кстати), но тогда проблемыобычно можно воспроизвести при отладке, но не сейчас :(Проблема также возникает в режиме без плагинов.Есть ли лучший подход, чем метод проб и ошибок, чтобы решить эту проблему?Изменить: добавление консоли, выводящей все подозрительные изменения в DOM, приводило к возникновению проблемы только иногда.(консоль также реализована в javascript на той же странице, я могу видеть результат даже после сбоя, так как окно все еще видно) По-видимому, это похоже на какое-то состояние гонки.Мне удалось отследить это еще дальше, и, похоже, это происходит, когда вы слишком быстро удаляете объект из DOM после того, как он только что был добавлен.(скорее всего, только для vml-элементов с каким-то специальным атрибутом, дальше не пробовал) И это нельзя исправить, добавив мертвый цикл перед removeChild (все равно довольно плохое решение), страницу нужно отрендеритьбраузер один раз после addChild, прежде чем вы сможете вызвать removeChild.вздох
7 голосов | спросил Ninja rhino 16 +04002010-10-16T16:37:29+04:00312010bEurope/MoscowSat, 16 Oct 2010 16:37:29 +0400 2010, 16:37:29

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132