2017-02-17 4 views
2

Я пытаюсь найти, какой JavaScript применяет «display: inline» к элементу изображения. Как вы можете видеть на прилагаемом рисунке, «дисплей: нет» не становится переопределены, но я понятия не имею, где «дисплей: встроенный» исходит от:Посмотрите, какой файл JavaScript применяет стиль к элементу

enter image description here

Источник представляет собой PHP-файл со многими. js-файлы. Я попытался использовать точки останова в своих инструментах разработчика Chrome, но потерял их при перезагрузке страницы. Любые идеи, как я могу определить JS-код, применяющий «display: inline»?

+2

Он исходит из атрибута 'style', который записывается непосредственно в HTML-элемент (т. Е.'

'). Это то, что означает раздел 'element.style'. –

+1

@ScottMarcus: Здесь также отображаются изменения, сделанные с помощью 'element.style.display =" inline "'. –

+0

@Scott Вот что я и подумал, но в этом элементе нет такого встроенного стиля. Вот почему я считаю, что он должен применяться JavaScript. –

ответ

5

Это работает для меня в Chrome:

  1. Открыть страницу
  2. Щелкните правой кнопкой мыши элемент и выберите соответствующий элемент
  3. В представлении DOM, щелкните правой кнопкой мыши элемент в DOM дереве
  4. В нижней части меню (для меня) выберите Break On> изменения атрибутов
    (позже, если вы хотите удалить это, оно переименовано в контрольные точки DOM)
  5. Если модификация уже произошло, нажмите обновить

Когда я делаю это, точка останова останавливает код, заходящего .style.display = "inline" на элементе (даже на обновления страницы) линии.

Мой элемент определен разметкой, а не добавлен кодом позже, поэтому, если ваш код добавлен позже, точка останова DOM может не сохраниться при обновлении страницы.

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

  1. Изменение разметки страницы, так что сразу после закрывающего тега элемента, у вас есть <script>debugger;</script>, как это:

    <div>This is the element</div> 
    <script>debugger;</script> 
    <div>The next element...</div> 
    

    (Обычно мы не сорят script tĀ gs по всему нашему HTML, но это сеанс отладки.)

  2. Открытые инструменты Dev

  3. Откройте страницу; он остановится на debugger выше высказывании

  4. Перейдите в режиме просмотра DOM и найти элемент там (это будет в непосредственной близости от дна)

  5. правой кнопки мыши и выберите Break On> атрибуты модификации

  6. Хит Возобновить стрелку, чтобы позволить вещам продолжать

Это должно позволить вам установить DOM точку останова в тим e, чтобы поймать все, что его модифицирует.

И наконец: если элемент добавлен кодом скрипта, вам нужно будет найти код, добавляющий его (blech), и установить точку останова сразу после ее добавления, чтобы вы могли выбрать шаг №4 во втором списке выше ,

+1

Даже если это не решит проблему OP, это технология отладки, которой никто не может быть без. –

+0

Я пробовал это. Проблема в том, что когда я обновляю страницу, Break On> модификации атрибутов не проверяется, поэтому она не прерывается, как следует. Любой способ обойти это? –

+0

@GTSJoe: Я думал о пути, который я только что добавил; см. новый бит выше. –

Смежные вопросы