Set a Timed Debugger To Web Inspect Hard-To-Grab Elements

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Die DevTools (in jedem Browser) sind ein unschätzbares Entwicklungswerkzeug für CSS-Entwickler. Wenn Sie die Stile eines beliebigen Elements sehen (und damit spielen) möchten, ist eine schnelle Inspektion nur wenige Klicks entfernt.

Klicken Sie mit der rechten Maustaste auf etwas und wählen Sie „Element untersuchen“ oder öffnen Sie die DevTools und verwenden Sie deren Auswahlwerkzeuge, um das zu erhalten, was Sie benötigen.

Aber… manchmal kann es schwierig oder unmöglich sein, das Element, das Sie untersuchen möchten, in den DevTools anzusprechen. Die DOM-Ereignisse, die für die Arbeit mit den DevTools selbst erforderlich sind, können stören.

Nehmen wir an, ich habe ein Element beim mouseenter-Ereignis eines bestimmten anderen Elements eingefügt und es dann bei mouseleave wieder entfernt.

Egal wie sehr ich mich bemühe, ich kann dieses neu hinzugefügte Element nicht für die Inspektion ansprechen.

Die Chrome DevTools können einen :hover-Stil simulieren, aber das hilft uns hier nicht wirklich weiter. Es löst kein DOM-Ereignis aus, es simuliert nur den CSS-Zustand.

Das ist sehr nützlich, aber wird uns hier nicht helfen.

Der Trick ist, einen Debugger genau dann auszulösen, wenn Sie ihn brauchen

Eine debugger;-Anweisung pausiert, wenn die DevTools geöffnet sind, das DOM quasi. Es werden keine weiteren Ereignisse ausgelöst und die Skriptausführung wird vollständig angehalten.

Aber… Sie können die DevTools trotzdem benutzen!

Das ist Ihre Gelegenheit, das sonst unmöglich auszuwählende Ding auszuwählen und zu tun, was Sie tun müssen. Sie können diese debugger;-Anweisung direkt in Ihren Code einfügen, wo Sie sie brauchen (denken Sie daran, dass die DevTools geöffnet sein müssen, damit sie funktioniert). Oder (Tim Holman hat mir den Trick gezeigt) Sie können sie direkt von der Konsole mit setTimeout() auslösen.

setTimeout(function() {
  debugger;
}, 3000);
Geben Sie sich ein paar Sekunden Zeit, um das DOM so zu gestalten, wie Sie es brauchen, dann wird der debugger; ausgelöst und Sie können wie gewohnt inspizieren.

Ich habe das ausprobiert und es funktioniert in Chrome, Firefox, Edge und Safari, also ist es ein ziemlich browserübergreifend DevTools-freundlicher Trick. Nur Chrome und Safari erlauben es Ihnen, Elemente im Debugger-Modus per Maus auszuwählen. In Edge oder Firefox müssen Sie sich möglicherweise manuell durch den Elements-Tab durcharbeiten, um das zu finden, was Sie brauchen.