Стоп-экран в Chrome Debugger / DevTools панель для проверки поповера?


394

Я использую Chrome Инспектор, чтобы попытаться проанализировать z-indexзагрузочный щебетать в твиттере, и нахожу его крайне разочаровывающим ...

Есть ли способ заморозить всплывающее окно (пока показано), чтобы я мог оценить и изменить связанный CSS?

Размещение фиксированного «наведения» на связанной ссылке не приводит к появлению всплывающего окна.


7
Попробуйте установить debugger;
— точку

5
Я использую window.setTimeoutдля запуска debuggerв течение 5 секунд, затем наведите курсор на элемент и подождите.
— Grimmdude

Здравствуйте, технический писатель DevTools здесь. Можете ли вы выслать мне MVCE, демонстрирующие проблему? По состоянию на 2019 год у нас есть несколько инструментов, которые должны справиться с задачей ( точки останова прослушивателя событий , переключатели псевдоклассов ), но я не могу дать подробный ответ, пока не смогу воспроизвести вашу ситуацию.
— Kayce басков


@KayceBasques Вот пример: telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist Нажмите на раскрывающийся список, чтобы открыть его, затем попробуйте проверить всплывающее окно с содержимым списка в представлении «Элементы».
— RMorrisey

Ответы:


704

Получил это работает. Здесь была моя процедура:

  1. Перейдите на нужную страницу
  2. Откройте консоль разработчика - F12в Windows / Linux или option+ ⌘+ Jв macOS
  3. Выберите Sourcesвкладку в Chrome Inspector
  4. В окне веб-браузера наведите курсор на нужный элемент, чтобы запустить всплывающее окно
  5. Нажмите F8на Windows / Linux (или fn+ F8на macOS), пока отображается всплывающее окно. Если вы щелкнули где-нибудь на текущей странице, F8 ничего не сделает. Ваш последний клик должен быть где-то в инспекторе, например, на вкладке источников
  6. Перейти на Elementsвкладку в инспекторе
  7. Найдите свой поповер (он будет вложен в HTML-код триггерного элемента)
  8. Получайте удовольствие от модификации CSS

9
Этот рабочий процесс дал мне краткое, полезное введение в отладчик точек останова и помог изолировать меню, которое было трудно стилизовать, так как оно исчезало при щелчке консоли.
— Тревор Пирс

22
Если элемент DOM использует событие focusout, чтобы скрыть, у вас нет шансов нажать F8!
— Марсель

2
@ Декан, чтобы вызвать F8 вам нужно использовать fn!
— mik01aj

10
Для получения дополнительной информации F8ярлык фактически приостанавливает отладчик (выполнение сценария). И ctrl + \ тоже работает. ( cmd + \ в MacOS).
— Леон - Хан Ли,

1
Или вы можете нажать F8дважды
— samdd

275

Для проверки любого элемента сделайте следующее. Это должно работать, даже если трудно дублировать состояние наведения:

  • Запустите следующий javascript в консоли. Это сломается в отладчике через 5 секунд.

    setTimeout(function(){debugger;}, 5000)

  • Идите, покажите свой элемент (при наведении курсора или как-то еще) и подождите, пока Chrome не взломает отладчик.

  • Теперь нажмите на Elementsвкладку в Chrome Inspector, и вы сможете найти свой элемент там.
  • Вы также можете нажать на Find Elementзначок (выглядит как увеличительное стекло), и Chrome позволит вам пойти и осмотреть и найти свой элемент на странице, щелкнув по нему правой кнопкой мыши и выбравInspect Element

Обратите внимание, что этот подход немного отличается от другого отличного ответа на этой странице.


7
Я уважаю, что вы должным образом уважали ответ frzsombor. отлично.
— Джереми Мориц

4
Это то, что мне было нужно, поскольку функциональность была вызвана тем, что элемент DOM был добавлен в js Focus и удален при размытии, что всегда происходит при переключении на инструменты dev.
— trudesign

6
Решение Абрама F8 у меня не сработало. Этот сделал. Спасибо!
— Ральф

3
Спасибо. Я сделал закладку с названием : ❚❚, адрес : javascript:debugger;. F8работает, но для тех, кто предпочитает использовать мышь, это может быть более удобным.
— Tymek

1
Как прокомментировали другие, ответ F8 не работал для меня и сводил меня с ума! Это работает как шарм. Спасибо!
— DoYouEvenCodeBro

70

ОБНОВЛЕНИЕ: Как написал Брэд Паркс в своем комментарии, есть намного лучшее и более простое решение с одной строкой кода JS:

запустить setTimeout(function(){debugger;},5000);, затем показать свой элемент и подождать, пока он не сломается в отладчике


Оригинальный ответ:

У меня просто была такая же проблема, и я думаю, что нашел «универсальное» решение. (при условии, что сайт использует jQuery)
Надеюсь, это кому-нибудь поможет!

  1. Перейти на вкладку элементов в инспекторе
  2. Щелкните правой кнопкой мыши <body>и выберите « Изменить как HTML »
  3. Добавьте следующий элемент после, <body>затем нажмите Ctrl + Enter:
    <div id="debugFreeze" data-rand="0"></div>
  4. Щелкните правой кнопкой мыши этот новый элемент и выберите «Разбить на ...» -> «Изменение атрибутов».
  5. Теперь перейдите в представление консоли и выполните следующую команду:
    setTimeout(function(){$("#debugFreeze").attr("data-rand",Math.random())},5000);
  6. Теперь вернитесь к окну браузера, и у вас есть 5 секунд, чтобы найти свой элемент и щелкнуть / hover / focus / etc, прежде чем будет достигнута точка останова и браузер "зависнет".
  7. Теперь вы можете спокойно проверить элемент, на который нажали / наведен / сфокусирован / и т.д.

Конечно, вы можете изменить javascript и время, если вы поняли идею.


11
Привет! Отличная идея ... вам даже не нужно добавлять дополнительный div ... Просто запустите этот javascript вместо этого setTimeout(function(){debugger;}, 5000);, затем покажите свой элемент и подождите, пока он не сломается в отладчике. Затем нажмите вкладку «Элементы» в Chrome Inspector, и вы сможете найти свой элемент там. Вы также можете щелкнуть значок «Найти элемент» (выглядит как увеличительное стекло), и Chrome позволит вам пойти и осмотреть и найти свой элемент на странице, щелкнув по нему правой кнопкой мыши и выбрав «Проверить элемент».
— Брэд Паркс

5
Я думаю, что вы должны добавить это как ответ, потому что это решение не просто лучше, чем мое, но лучше, чем все остальные здесь. Действительно мило!
— frzsombor

38
  1. Щелкните правой кнопкой мыши в любом месте вкладки элементов
  2. выбирать Breakon... > subtree modifications
  3. Запустите всплывающее окно, которое вы хотите увидеть, и оно остановится, если увидит изменения в DOM
  4. Если вы по-прежнему не видите всплывающее окно, нажимайте Step over the next function(F10)кнопку рядом Resume(F8)с верхним верхним центром хрома, пока не остановите всплывающее окно, которое хотите увидеть.

3
БЛАГОДАРЮ ВАС! Я не знал этого, и это спасло меня
— R Claven

14

Я обнаружил, что это очень хорошо работает в Chrome.

Щелкните правой кнопкой мыши по элементу, который вы хотите проверить, затем выберите Force Element State> Hover. Скриншот прилагается.

Состояние силового элемента


5
Это будет работать, только если всплывающее окно запускается css.
— mik01aj

6

Поместите это на вкладку консоли:

setTimeout(function(){debugger;}, 5000)

Затем нажмите, где показать всплывающее окно, через 5 секунд - экран будет заморожен и получайте удовольствие от настройки CSS.


0

Мой простой способ:

setTimeout(function(){ debugger; }, 3000);

7
Это точно так же, как и решение Брэда Паркса, опубликованное 3 года назад
— frzsombor

-2

Я попробовал другие решения здесь, они работают, но я ленивый, так что это мое решение

  1. наведите курсор на элемент, чтобы вызвать расширенное состояние
  2. ctrl+ shift+c
  3. снова наведите курсор на элемент
  4. щелкните правой кнопкой мыши
  5. перейти к отладчику

при щелчке правой кнопкой мыши по нему больше не регистрируется событие мыши, так как всплывающее контекстное меню позволяет безопасно перемещать мышь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.