Як я можу перевірити зникаючий елемент у браузері?


152

Як я можу перевірити елемент, який зникає, коли миша відсувається? Приклад випадаючого списку, який зникає

Я не знаю, це ID, клас чи щось інше, але хочу перевірити його.

Я спробував рішення:

Запустіть селектор jQuery всередині консолі, $('*:contains("some text")')але не пощастило головним чином тому, що елемент не приховано, але, ймовірно, видалено з дерева DOM.

Ручний огляд дерева DOM на предмет змін не дає мені нічого, оскільки, здається, це занадто швидко, щоб помітити, що змінилося.

УСПІХ:

Я маю успіх з точки зору перерв на події Конкретно - в моєму випадку замазаний. Просто перейдіть Sources-> Event Listener Breakpoints-> Mouse-> mousedownу Chrome. Після цього я натиснув елемент, який хотів оглянути, і всередині Scope Variablesя побачив кілька корисних вказівок.


2
Ваше запитання допомогло, хоча я не потрапив на точку розриву за допомогою джерел, я виконав наступний скрипт у консолі: document.body.addEventListener('mouseup',function(){ debugger; })Це мене перервало, і я міг оглянути створені елементи.
HMR

Ти рок. Якби ця проблема була з контролем React-Select, де я не міг переглядати HTML елементів списку, оскільки піддірець видалився б у будь-який момент, коли я натиснув його. Потрібні ідентифікатори товару для автоматизації кліків за допомогою Selenium. Дякую!
araisbec

Відповіді:


177

(Ця відповідь стосується лише Інструментів для розробників Chrome. Дивіться оновлення нижче.)

Знайдіть елемент, який містить елемент, що зникає. Клацніть правою кнопкою миші на елементі та застосуйте "Перерва на ...> Зміни підкреслень". Це викине паузу налагодження до зникнення елемента, що дозволить вам взаємодіяти з елементом у призупиненому стані.

введіть тут опис зображення

Оновлення 22 жовтня 2019 року: з випуском версії 70, схоже, FireFox нарешті підтримує цей вид налагодження 2 3 :

введіть тут опис зображення


1
Щоб уникнути можливої ​​плутанини - налагоджувач буде призупинятись, коли ви запускаєте подію, інакше вводячи назву місця. Коли екран призупиниться, просто натисніть кнопку відтворення на самому DOM, і ви зможете викликати подію.
Ділан Пірс

Це не працює, якщо сторінка захопила клацання правою кнопкою миші і робить це власною справою при натисканні правою кнопкою миші.
Михайло

Це не працює для першого з двох діалогів в одному контейнері
Still_learning

@Still_learning Чи можете ви пояснити, що ви маєте на увазі під "двома діалогами в одному контейнері".
arxpoetica

<v-container><v-dialog></v-dialog><v-dialog></v-dialog></v-container>- у моєму випадку перше діалогове вікно відображається лише до того моменту, коли дані
надійдуть

92

Альтернативний метод у Chrome:

  • Відкриті програми devTools (F12).
  • Виберіть вкладку "Джерела".
  • Поки потрібний елемент відображається, натисніть F8 (або Ctrl + /). Це порушить виконання сценарію та "заморозить" DOM ​​саме так, як він відображається.
  • З цього моменту використовуйте Ctrl + Shift + C для вибору елемента.

3
Ідеально !! Це саме те, що я хотів
Даніель Лотертон

2
Я помітив, що це працює лише тоді, коли у вас відкриті інструменти для розробників на вкладці "Джерела".
hbulens

3
він заморожує код від виконання, але елемент все одно зник (я використовую React).
Lorem Ipsum Dolor

Мій Chrome каже F8 або Crtl + \ (не Crtl + /). Крім того, Crtl + \ не працює в моєму випадку ...
Роджер Весіана

Це не працює в спливаючих вікнах відеоконтролю Google ... елемент керування зникає з виду, як тільки ви натискаєте клавішу, і повністю згасає до того, як відбудеться заморожування.
Майкл

18
  1. Відкрити консоль
  2. Введіть setTimeout(()=>{debugger;},5000);
  3. Натисніть Enter

Тепер у вас є 5 секунд, щоб ваш елемент з'явився. Як тільки він з’явився, зачекайте, поки налагоджувач не потрапить. Поки ви не поновлюєтесь, ви можете грати зі своїм елементом, і він не зникне.


Корисна порада, щоб не повторювати ці кроки вище кожного разу:

додайте це як закладку:

  1. Закладка будь-якої сторінки
  2. Відредагуйте цю нову закладку
  3. Замініть URL / місце на: javascript:(function(){setTimeout(()=>{debugger;},5000);})();

Наступного разу, коли ви бажаєте використовувати це, просто натисніть / торкніться цієї закладки.


1
Це найшвидший і стабільний спосіб налагодження зникаючих елементів ^
warmwhisky

8

Я використовую хром на Mac, я дотримувався вищезазначених кроків, але спробую пояснити трохи більше:

  1. Клацніть правою кнопкою миші та перейдіть до огляду елемента.
  2. Перейдіть на вкладку "Джерела".
  3. Потім наведіть курсор на елемент.
  4. Потім за допомогою клавіатури F8 або Command(Window) \ . Це призупинить екран у статичному стані, і елемент не зникне, якщо навести курсор.

1
Дякую, дякую, за детальну інструкцію! Після прояву надзвичайної спритності - натискання на кнопку, натискання Ctr + Shift + C, переміщення миші, щоб навести курсор на елемент, і натискання F8в межах секунди та половини - я нарешті отримав свій елемент у режимі
огляду

2

У Firebug для цього є різні рішення:

  1. Ви можете використовувати Break On Mutate всередині панелі HTML. (за допомогою цього ви також зможете дізнатися, який це елемент)
  2. Ви можете клацнути правою кнопкою миші елемент і вибрати Оглянути елемент за допомогою Firebug

Також ви можете скористатися проблемою 551 , яка запитує спосіб тимчасового блокування конкретних подій.

Редагувати:

Щоб дізнатися, який це елемент, ви також можете включити параметри панелі HTML Виділити зміни , розгорнути зміни та прокрутити зміни до перегляду, щоб зробити елемент видимим на панелі HTML.

Себастьян


У Chrome також є гідний інспектор. Проблема в тому, що - клацання правою кнопкою миші на елементі змушує його зникнути в моєму випадку. Chrome також має функцію Break on DOM mutate. Проблема в цьому - я не знаю, який це елемент, оскільки він динамічно генерується
lukas.pukenis

1
Я просто відредагував свою відповідь, щоб дати підказку, як дізнатися, який це елемент.
Себастьян Зартнер

2

У моєму випадку я використовував рекурсивну опцію Expand на Google Chrome:

Етапи:

  1. Перевірте спадне поле
  2. Знайдіть динамічний DOM (фіолетовий колір)
  3. Клацніть правою клавішею миші на цьому динамічному DOM
  4. Виберіть " Розгорнути" рекурсивно : введіть тут опис зображення
  5. Ми можемо бачити, що всі елементи є

Ось демонстрація:

введіть тут опис зображення


2

Наведіть курсор миші на елемент і натисніть клавішу F8 (це в Chrome), щоб призупинити виконання сценарію. Стан, що наближається, залишиться видимим для вас.

Він перенесе вас на вкладку джерел. Поверніться на вкладку «Елементи». Цей тимчасовий код не зіпсує.


0

ви можете переглянути елементи, які з’являються та зникають у інспектора під елементами. Якщо ви переходите до елемента, коли він видно, ви повинні мати можливість бачити його зникнення або бачити його зміну css при зміні статусу.

Це можливо за допомогою firebug у firefox або вбудованого інспектора з хрому.


1
Так. Я заявив, що в DOM зміни відбуваються занадто швидко, і сторінка сильно модифікує DOM, тому це насправді не рішення, оскільки я не в змозі розрізнити потрібні елементи від
купок

ви можете спробувати простежити, що відбувається за допомогою console.log, наприклад, на початку функції, яку ви намагаєтеся перевірити, ви можете переглянути об'єкт css тощо. Або сповільнити зміни, поки ви не дізнаєтесь, що вони працюють належним чином, а потім змінити швидкість на те, що ви хочете, щоб це було, наприклад, ховатися ('повільно') в jquery
matpol

Проблема в тому, що - це не моя власна кодова база, це спадщина, велика, стара, кодова база, де простий пошук по файлах не дає мені нічого .. :)
lukas.pukenis

Ви також можете переглянути, які файли використовує сторінка в інспекторі. Я би пройшов їх видалення, поки він не зламається, а потім подивіться у файл, який його зламав, і піти звідти. Ви також завжди можете шукати фактичні файли.
матпол


0

У мене була така ж проблема, але я використовую Firefox, вона зникає, як тільки я відкриваю елемент перевірки, знайшов рішення: відкрийте 4 тире (налаштування), перейдіть до веб-розробника> Налагоджувач і негайно натисніть F8, що є ярликом для паузи, що зупиняє сценарій перед тим, як почати і виявити, що ви відкрили інструменти для розробників

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.