Як я можу перевірити html-елемент, який зникає з DOM на втраченому фокусі?


137

Я намагаюсь перевірити властивості CSS із введення в комірку таблиці. Вхід з’являється при натисканні і зникає при втраченій фокусі, як коли я намагаюся його перевірити. Як я можу це зробити, щоб не втратити фокус під час переходу до іншого вікна (інспектор)?



3
ні, рішення цього питання тут не підходить
Роджеліо Тривіньо

1
Рішення дуже підходить
Джонатан

2
З цією відповіддю вирішено й інші питання, і це була моя перша спроба, але в цій ситуації стан фокусування втрачається, коли ви переходите з браузера до вікна Інструменти для розробників Chrome, а також потрібний елемент, щоб перевірити, чи не зникає. Я говорю про елементи DOM, які з’являються при натисканні, і зникають при втраті уваги.
Роджеліо Тривіньо

Відповіді:


144

У браузері Chrome відкрийте «Інструменти розробника» та виберіть вкладку «Елементи» , потім відкрийте контекстне меню батьківського вузла елемента, який ви хочете перевірити, у контекстному меню натисніть на « Перерв» > « Зміни підкреслення» .

Після цього вам просто потрібно натиснути на сторінку, і ви потрапите на інспектора, не втрачаючи уваги і не втрачаючи елемент, який ви хочете перевірити.

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


5
Чи є спосіб і у ФФ?
чувак

2
дякую, після заблокованих годин я отримав це рішення, і вирішив написати питання і рішення тут, з часом моє головне джерело репутації тут, знаєте, у мене немає часу на запитання типу "як ти можеш зробити 2 + 2 на Java? "
Rogelio Triviño

Як ви знайдете батьківський вузол елемента, який ви хочете перевірити? У мене є кнопка, яку я натискаю, щоб відкрити елемент в інспекторі, але спливаюче вікно, мабуть, не пов'язане в DOM.
Михайло

так, іноді javascript створює нові елементи безпосередньо під тілом або пов’язаними з ними верхніми елементами DOM. Якщо ваш код не є проблемою, ви повинні знати, де ваш JavaScript створює річ, якщо ні, можливо, ви повинні перерватися на зміни піддерева BODY і перевірити інструменти розробників, де саме створюються нові елементи дому (не обов’язково бути прямим батько)
Роджеліо Тривіньо

Для тих, хто плутається у контекстному меню, це меню з трьома крапками в крайній лівій частині вузла дому.
palerdot

92

Ви можете захопити зникаючий елемент, якщо призупинити виконання JavaScript за допомогою комбінації клавіш без переміщення миші. Ось як це зробити в Chrome:

  1. Відкрийте Інструменти для розробників та перейдіть до Джерела.
  2. Зверніть увагу на ярлик для призупинення виконання сценарію - F8.

    Призупинення виконання сценарію

  3. Взаємодійте з інтерфейсом користувача, щоб отримати елемент для появи.

  4. Удар F8.
  5. Як ви можете переміщати мишу, огляньте DOM, що завгодно. Стихія залишиться там.

Цей трюк працює і в Firefox та інших сучасних браузерах.


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

На жаль, це лише натяк на хром, але вирішив це, чому я спробував це сам.
webwake

1
@webwake, так, саме цей приклад є в Chrome, але більшість сучасних браузерів дозволить вам призупинити виконання сценарію за допомогою комбінації клавіш.
mxxk

Це працювало чудово і було так просто! Примітка. Це "⌘ +", щоб призупинити виконання сценарію в Chrome для Mac.
Джордан Грей

1
Приємно почути @JordanGray. Ви мали на увазі -поверху? Для мене це говорить і це, і F8робота.
mxxk

73

Якщо все інше не вдається, введіть це в консолі:

setTimeout(() => { debugger; }, 5000)

Потім у вас є 5 секунд (або змінити значення на будь-що інше), щоб зробити все, що ви хочете налагоджувати.

Жоден з інших відповідей для мене не працював - дерево DOM не змінювалось (тобто речі, про які я дбаю, зникли) прямо перед тим, як сценарій призупинився.


7
Це рішення досить хакі, але воно насправді спрацьовує! Дякую!
Манджар

1
Найбільш надійне просте рішення їх усіх.
Джеймс

13

Не впевнений, що це працює у вашій ситуації, але зазвичай (і в кожному разі варто згадати в цьому плані, оскільки це чудовий інструмент) в Інструментах для розробників Chrome ви можете імітувати стани елементів, і це також :focus .

Для цього перейдіть на Elementsвкладку Інструменти для розробників і переконайтеся, що ви знаходитесь у Stylesрозділі праворуч (це має бути місце за замовчуванням при запуску Інструментів для розробників). Тепер трохи під Стилями у верхньому правому куті ви значком Toggle Element State. При натисканні на неї ви можете моделювати :active, :hover, :focusі :visitedдля елемента ви вибрали на лівій у вашому уявленні коду.

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


3
З цією відповіддю вирішено й інші питання, і це була моя перша спроба, але в цій ситуації стан фокусування втрачається, коли ви переходите з браузера до вікна Інструменти для розробників Chrome
Rogelio Triviño

9

У Chrome на сторінці інструментів розробника для тестованої сторінки ... натисніть меню параметрів та відкрийте налаштування для налаштувань ... у розділі DevTools включіть "Емуляція зосередженої сторінки"

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


8

Це не справжнє рішення, але воно зазвичай працює (:

  1. Сфокусуйте елемент
  2. Клацніть правою кнопкою миші контекстне меню
  3. Перемістіться до інструментів для розробників

Перевірка фокусируемого вводу


1
все ще працює на Chrome з січня 2020 року, дякую за це! приємне
подолання

2

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

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


1

Вставте наступний Javascript у консоль розробника браузера:

// Delayed console log of parent element with disappearing child element(s)
// Once code is trigger, you have 3 seconds to trigger the hidden element before it snapshots.
// The hidden elements should appear in the console ready to inspect.

var timer = 3000; //time before snapshot
var parent_of_element_to_inspect = 'div.elementcontainer'; //container of element to snapshot
setTimeout(function(){
 console.log(document.querySelector(parent_of_element_to_inspect).cloneNode(true));
},timer);

0

У мене є швидше виправити, оскільки я не дуже добре користуюся інструментами, ось що я роблю.

event.originalEvent.preventDefault();
event.originalEvent.stopImmediatePropagation();
event.originalEvent.stopPropagation();

-1

Якщо відкрити Chrome DevTools і потім запустити інспектор елементів за допомогою комбінацій клавіш, це повинно вирішити проблему.

Mac: Cmd+Opt+J а потімCmd+Opt+C

Windows: Ctrl+Shift+J а потімCtrl+Shift+C

[1]

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