«Осмотреть» элемент наведения?

102

Примечание: я читал похожие темы, но это не моя проблема - я могу щелкнуть правой кнопкой мыши по нему нормально, он просто исчезнет.

Я нахожу "Inspect Element" бесценным инструментом в Chrome, однако во время моего последнего набега, когда я изучаю волшебные способы, которыми многие из вас уже владеют, я создал подменю для элемента на моей панели навигации, которое всплывает ниже при наведении курсора на него. родительский элемент.

Всплывающее окно (или вниз) не совсем оформлено так, как мне хотелось бы, поэтому я щелкаю правой кнопкой мыши> проверяю элемент, чтобы увидеть, что именно откуда, и лучше понять, как достичь желаемого эффекта.

Однако, как только я убираю указатель мыши от меню, оно исчезает.

Поэтому я не могу выбирать разные элементы на панели проверки и видеть, какая область выделяется одновременно.

Есть ли способ обойти это, не меняя меню, чтобы оно оставалось «всплывающим» после активации?

OJFord
источник
2
В подобных ситуациях я обычно использую консоль для временного изменения страницы, например для удаления mouseleaveсобытия из родительского меню. Подменю должно оставаться открытым даже после того, как вы уберете указатель мыши с родительского меню.
jbabey
Chrome теперь поддерживает это. Выберите элемент пользовательского интерфейса (например, тег)> Проверить элемент> Вкладка «Стили», рядом с полем фильтра есть раздел «: hov». Щелкните по нему. Теперь вы можете установить флажок при наведении курсора и посмотреть, какие стили загружаются при наведении.
Dhanuka777

Ответы:

69

Если hoverэффект дается, CSSто да, я обычно использую два варианта, чтобы получить это:

Один из них , чтобы когда мышь оставить : Откройте инспектор в пристыкован окне и увеличивать ширину до достижения ваших , а затем щелкните правой кнопкой мыши и во всплывающем меню должно быть над зоной инспектор ... тогда , когда вы перемещаете мышь по мнению инспектора , активированный в документе замок.seehover effecthover area
HTML elementhover effect

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

Во- вторых, к даже если мышь не над , откройте инспектор, перейдите и нажмите в правом верхнем значок , который говорит ... (пунктирный прямоугольник со стрелкой) Там вы вручную можете активировать (среди прочих) с установлен флажок.keephover effectHTML elementStyles TABToggle Element StateHover Event

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

Если не совсем понятно, дайте мне знать, и я могу добавить несколько скриншотов. Отредактировано : добавлен скриншот.

И, наконец, как я сказал вначале, я смогу сделать это, только если hoverустановлено с помощью CSS:HOVER... когда вы, например, управляете с hover stateпомощью jQuery.onMouseOver, работает (иногда) только метод One.

Надеюсь, поможет.

ГМО
источник
4
Ваше первое решение - хороший обходной путь, и у меня есть способ сделать его лучше: щелкните правой кнопкой мыши элемент, на который наведен курсор, полностью переместите мышь в «зону инспектора», а затем перейдите с помощью клавиш клавиатуры и нажмите Enter на элементе проверки. ". Элемент останется зависшим. Что касается вашего второго решения, да, это (или использование контекстного меню :hover), очевидно, должно было быть правильным решением, но, к большому сожалению, это не работало в Chrome / Firefox столько, сколько я помню ...
Гилад Барнер
Я привык делать это в Windows, но на Mac этот трюк не работает. Кто-нибудь нашел способ сделать это на Mac? кажется, что он «передает» события перемещения мыши в окно, даже если мышь находится в инспекторе или подменю
Сантьяго Аризти
@GiladBarner спасибо за предложенный ярлык, у меня это сработало. Я не знаю, проблема ли это на моем компьютере или нет, но я не вижу параметр меню, выбранный с помощью клавиатуры, а сочетание клавиш (ctrl-shift-I) не работает, пока отображается раскрывающееся меню , поэтому, поскольку элемент проверки - это последняя опция в раскрывающемся списке, я использовал клавишу со стрелкой вверх, чтобы перейти к последнему элементу и нажать Enter, и это сработало.
Билл Хайлман
Похоже, что на данный момент :hoverопция находится в опции Toggle Classes
Sagnik Pradhan
153

Если наведение запускается JS, просто приостановите выполнение скрипта с помощью клавиатуры. Это гораздо более простой способ заморозить DOM, чем предлагают другие ответы.

Вот как это сделать в Chrome. Я уверен, что у Firefox есть эквивалентная процедура:

  1. Откройте Инструменты разработчика и перейдите в Источники.
  2. Обратите внимание на ярлык для приостановки выполнения скрипта - F8.

    Приостановить выполнение скрипта

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

  4. Хит F8.
  5. Теперь вы можете перемещать указатель мыши, проверять DOM, что угодно. Элемент останется там.
mxxk
источник
3
Другие предлагаемые здесь методы не работают во многих контекстах, в которых это работает.
Эд Стауб
2
Потрясающие. Думаю, это лучший способ.
Варун Мехта
1
для Safari это Debuggerвкладка
user2661518
6
У меня это не сработало. После F8этого экран зависает и не может выбрать какие-либо элементы. Мой обходной путь - нажать F8, переключиться на Elementsвкладку, а затем искать слова, которые находятся в элементе наведения.
AngryHacker
1
Он работает так же в Firefox, но вам нужно сфокусироваться на вкладке отладчика, прежде чем нажимать F8 (этот ярлык работает оттуда). После паузы вы можете проверить DOM со всеми элементами, которые существуют только в состоянии: hover. Это просто вопрос нажатия F8 при наведении курсора на проверяемые элементы. Если вам нужно выбрать другой элемент, старайтесь избегать контекстного меню для проверки (может вызвать возобновление работы). Используйте верхний левый значок инструмента разработчика, чтобы захватить его.
Кир Канос,
32

Что сработало для меня, так это выбор конкретного тега, который я хотел проверить, и сделать следующее:

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

После выполнения вышеизложенного я бы снова обычно выбирал этот тег, тогда раскрывающийся список автоматически остается как есть, даже когда я нахожу указатель мыши на другие места, такие как Inspect Element и т. Д.

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

Надеюсь это поможет. :)

Воппи
источник
5
Гений :). Это позволяет проверять наведение, обнаруженное javascript.
ElwoodP
1
приятно, это сработало лучше, чем исходный ответ для меня.
Виктор
14

Вы также можете сделать это в консоли javascript:

$('#foo').trigger('mouseover');

Объект, который «заморозит» элемент в состоянии «зависания».

Pixelearth
источник
7

Вот как я это делаю без изменений CSS или приостановки JS в Chrome (я нахожусь на Mac, и у меня нет ПК передо мной, если вы работаете в Win):

  1. откройте консоль разработчика.
  2. пока не включайте инструмент проверки при наведении, а вместо этого откройте желаемое подменю, наведя на него указатель мыши.
  3. нажмите Command+ Shift+ C(Mac) или Ctrl+ Shift+ C(Win / Linux)

теперь инструмент проверки при наведении будет применяться к элементам, которые вы открыли в суб-навигаторе.

Джош
источник
4

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

Откройте инспектор в Chrome или Firefox, щелкните правой кнопкой мыши интересующий вас элемент и выберите соответствующий вариант (в данном случае: наведение). Это вызовет связанный CSS.

Открытие меню в хроме Открытие того же меню в Firefox

Скриншоты из Firefox 55 и Chrome 61.

MayeulC
источник
1
К сожалению, это не сработает для сложных вещей: на зависших элементах. Он только запускает состояние псевдокласса CSS. Эффективное включение css. Но это не вызывает событие javascript. Первоначальный вопрос был о возможности отладки в таком сценарии. См. Мой комментарий в ответе, получившем наибольшее количество голосов (не принятом), чтобы узнать, как это сделать в Chrome и Firefox.
Кир Канос,
2

Отличный материал!

Спасибо gmo за этот совет. Я не знал, что эти настройки атрибутов очень полезны.

В качестве небольшой поправки к формулировке я бы объяснил этот процесс следующим образом:

  • Щелкните правой кнопкой мыши элемент, который хотите стилизовать.

    • Откройте инструмент "Осмотреть"

    • Справа перейдите на небольшую вкладку "Стили".

    • Найдено над содержимым таблицы стилей CSS

    • Выберите опцию .hov - это даст вам все настройки, доступные для выбранного элемента HTML.

    • Щелкните и сделайте все параметры неактивными

    • Теперь выберите состояние, которое вы хотите настроить - при активации любого из них ваша таблица стилей переместит вас прямо к этим настройкам:

Стили - Настройка фильтров - Интерактивные элементы

Эта информация стала для меня палочкой-выручалочкой, не могу поверить, что я только что об этом узнала!

Дэн Хэддок
источник
Это был лучший способ для хрома!
венчик
1
Отлично, мой ответ был вам полезен?
Дэн Хэддок
1

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

Итак, вот что я сделал:

  1. Добавьте простой скрипт для входа в режим отладчика для mouseoverэлемента, который запускает событие зависания, которое вас беспокоит.
$(document).on('mouseover', '[your-hover-element-selector]', function(e) {
  debugger;
});
  1. Затем, когда консоль разработчика открыта в Chrome, наведите указатель мыши на свой элемент, и вы войдете в режим отладчика. Перейдите в раздел источников инструментов разработчика и нажмите кнопку «Возобновить выполнение скрипта» (синяя кнопка ниже).

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

Как только вы это сделаете, ваша DOM будет приостановлена ​​в состоянии наведения, и вы сможете использовать инспектор элементов для проверки всех элементов, поскольку они существуют в этом состоянии.

tddrmllr
источник
0

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

Вуди
источник
Да ладно, парень, я специально сказал, не делая такой модификации.
OJFord
вы сказали, чтобы он не «оставался всплывающим после активации». Я предлагаю удалить все триггеры активации, чтобы он всегда был виден. так я делаю все всплывающие меню, иначе это - мир боли. но нокаутируй себя :)
Woody