Подтвердить что ты не робот

Отмена отладки атрибута DOM

Как-то где-то в моем коде один из элементов на странице получает атрибут стиля, который я не ожидаю получить. А именно, он получает style = "position: fixed". Я вижу, что это происходит на вкладке HTML в Firebug, но не может найти его в коде. Приложение довольно большое, и я не могу просто просмотреть весь код, чтобы найти место, кроме того, используются несколько сторонних библиотек (один из них - jQuery).

Итак, мой вопрос: возможно ли каким-то образом уловить этот стиль, который будет изменен и получить трассировку?

4b9b3361

Ответ 1

Хорошо, после нескольких часов работы в Google и экспериментирования кажется, что лучше всего это сделать, чтобы настроить MutationEvent обработчик ( Firefox поддерживает их):

var node_modified = function(evt) {
    if(evt.attrName == 'style') {
        alert('Style is changing from ' + evt.prevValue + ' to ' + evt.newValue);
    }
}
var test_close = document.getElementById('test_close');
test_close.addEventListener('DOMAttrModified', node_modified, false);

Затем настройте какой-то журнал в вашем коде и посмотрите, когда это событие активируется. К сожалению, вы не можете просто установить точку останова в обработчике событий мутации и увидеть трассировку стека, потому что трассировка стека обработчика событий не имеет информации о месте в коде, где событие было вызвано. Какой-то логичный, но я думаю, что с некоторыми хаками эта функция может быть реализована в Firebug.

Спасибо за ваше время!

Ответ 2

В Google Chrome щелкните правой кнопкой мыши на элементе страницы и выберите "Осмотреть элемент". Окно или панель инструментов разработчика откроются с этим элементом, выбранным в исходном представлении. Затем вы можете щелкнуть правой кнопкой мыши по выбранному тегу и выбрать "Изменить атрибуты атрибутов".

Ответ 3

В Firebug html inspector вы можете щелкнуть правой кнопкой мыши по node, и есть возможность прервать изменение атрибута.

Точки останова сохраняются при перезагрузке страниц, и вы также можете просматривать стек вызовов.

Ответ 4

Похоже, вам действительно нужен отладчик. Firebug имеет один встроенный, в противном случае вы можете дать Venkman попытка, которую я считаю немного более громоздкой, но, возможно, более эффективной.

Удачи!:)