Bagaimana saya bisa memeriksa elemen html yang hilang dari DOM saat kehilangan fokus?

137

Saya mencoba memeriksa properti CSS dari input ke dalam sel tabel. Input muncul pada klik dan menghilang pada fokus yang hilang, seperti ketika saya mencoba memeriksanya. Bagaimana saya bisa melakukannya agar tidak kehilangan fokus saat saya pindah ke jendela lain (inspektur)?

Rogelio Triviño
sumber
3
tidak, solusi pada pertanyaan ini tidak cocok di sini
Rogelio Triviño
1
Solusinya sangat cocok
Jonathan
2
Ada pertanyaan lain yang diselesaikan dengan jawaban ini, dan ini adalah percobaan pertama saya, tetapi dalam situasi ini, status: fokus hilang ketika Anda mengubah dari browser ke jendela Alat Pengembang Chrome, dan item yang diinginkan untuk memeriksa juga menghilang. Saya berbicara tentang elemen DOM yang muncul pada klik, dan menghilang pada kehilangan fokus.
Rogelio Triviño

Jawaban:

144

Di browser Chrome, buka Alat Pengembang dan pilih tab Elemen , lalu buka menu kontekstual dari simpul induk dari elemen yang ingin Anda periksa, dalam klik menu kontekstual pada Break on > Subtree modifikasi .

Setelah itu Anda hanya perlu mengklik halaman dan Anda akan mendapatkan inspektur tanpa kehilangan fokus atau kehilangan elemen yang ingin Anda periksa.

masukkan deskripsi gambar di sini

Rogelio Triviño
sumber
5
Apakah ada cara di FF juga?
Bung
2
terima kasih, setelah beberapa jam saya mendapatkan solusi ini, dan memutuskan untuk menulis pertanyaan dan solusi di sini, seiring waktu adalah sumber reputasi utama saya di sini, Anda tahu, saya tidak punya waktu untuk pertanyaan seperti "bagaimana Anda bisa melakukan 2 + 2 di java? "
Rogelio Triviño
Bagaimana Anda menemukan simpul induk dari elemen yang ingin Anda periksa? Saya memiliki tombol yang saya klik untuk membuka elemen di inspektur, tetapi pop-up tampaknya tidak berhubungan di DOM.
Michael
ya, terkadang javascript membuat elemen baru langsung di bawah tubuh atau elemen DOM top terkait. Jika kode Anda tidak ada masalah, Anda harus tahu di mana javascript Anda menciptakan hal itu, jika tidak, mungkin Anda harus istirahat pada modifikasi subtree BODY dan memeriksa alat dev di mana tepatnya membuat elemen dom baru (tidak harus langsung induk)
Rogelio Triviño
Bagi mereka yang bingung tentang menu kontekstual, itu adalah menu tiga titik di paling kiri dari node dom.
palerdot
92

Anda dapat menangkap elemen yang hilang jika Anda menghentikan eksekusi JavaScript dengan pintasan keyboard tanpa menggerakkan mouse. Begini cara Anda melakukan ini di Chrome:

  1. Buka Alat Pengembang dan buka Sumber.
  2. Perhatikan cara pintas untuk menjeda eksekusi skrip— F8.

    Jeda eksekusi skrip

  3. Berinteraksi dengan UI untuk membuat elemen muncul.

  4. Hit F8.
  5. Bagaimana Anda bisa menggerakkan mouse Anda, memeriksa DOM, apa pun. Elemen akan tetap di sana.

Trik ini berfungsi di Firefox dan browser modern lainnya juga.

mxxk
sumber
12
Ini bagus untuk banyak hal - tetapi beberapa skrip masih akan terpicu sebelum debugger dikunci. Misalnya, kotak pemilihan autocomplete saya menyembunyikan semua pilihan sebelum skrip dijeda - membuatnya sangat sulit untuk mengubah gaya secara interaktif.
Mir
Sayangnya ini hanya petunjuk chrome, tetapi dipecahkan mengapa saya mencobanya sendiri.
webwake
1
@webwake, ya contoh khusus ini ada di Chrome, tetapi sebagian besar peramban modern akan membiarkan Anda menghentikan eksekusi skrip menggunakan pintasan keyboard.
mxxk
Ini bekerja dengan sempurna dan sangat mudah! Catatan: ini `⌘ +` untuk menjeda eksekusi skrip di Chrome untuk Mac.
Jordan Grey
1
Senang mendengar @JordanGray. Apakah maksud Anda -sampah? Bagi saya itu mengatakan keduanya juga F8berfungsi.
mxxk
73

Jika semuanya gagal, ketikkan ini di Konsol:

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

Kemudian Anda punya 5 detik (atau ubah nilainya menjadi apa pun) untuk membuat apa pun yang ingin Anda debug muncul.

Tidak ada jawaban lain yang bekerja untuk saya - pohon DOM terus dimodifikasi (yaitu hal-hal yang saya pedulikan menghilang) tepat sebelum skrip dijeda.

Nick Farina
sumber
7
Solusi ini lumayan gila, tetapi sebenarnya berhasil! Terima kasih!
Manjar
1
Solusi sederhana yang paling dapat diandalkan dari semuanya.
James
13

Tidak yakin apakah ini berfungsi dalam situasi Anda tetapi biasanya (dan dalam setiap kasus layak disebutkan dalam hal ini karena merupakan alat yang hebat) di Alat Pengembang Chrome Anda dapat mensimulasikan keadaan elemen dan satu juga :focus.

Untuk melakukannya buka Elementstab di Alat Pengembang dan pastikan Anda berada di Stylesbagian di sebelah kanan (ini harus menjadi lokasi default ketika Anda memulai Alat Pengembang). Sekarang beneth Styles di sudut kanan atas Anda memiliki ikon Toggle Element State. Ketika Anda klik Anda dapat mensimulasikan :active, :hover, :focusdan :visiteduntuk elemen yang dipilih di sebelah kiri dalam tampilan kode Anda.

masukkan deskripsi gambar di sini

Dumba F.
sumber
3
Ada pertanyaan lain yang diselesaikan dengan jawaban ini, dan ini adalah percobaan pertama saya, tetapi dalam situasi ini
,:
9

Di Chrome pada halaman alat pengembang untuk halaman yang diuji ... klik menu opsi dan buka pengaturan untuk preferensi ... di bawah DevTools memungkinkan 'Emulasikan halaman fokus'

Kemudian di halaman pengujian menyebabkan elemen muncul. Ini berfungsi agar hasil pencarian popup saya terfokus untuk tetap di layar sehingga saya bisa bekerja dengannya.

pengguna10864281
sumber
8

Bukan solusi nyata, tetapi biasanya berfungsi (:

  1. Fokuskan elemen
  2. Klik kanan untuk menu konteks
  3. Turun ke alat pengembang

Memeriksa input yang fokus

Dmitry Vyprichenko
sumber
1
masih bekerja di Chrome pada Januari 2020, terima kasih untuk ini! solusi yang bagus
manroe
2

Saya memiliki situasi yang sangat sulit dan tidak ada jawaban yang bekerja dari sini (saya tidak memverifikasi jawaban yang mengubah wadah, yang merupakan tubuh bagi saya, atau acara asli, karena saya tidak tahu itu). Saya akhirnya menemukan solusi dengan menerobos Breakpoint Pendengar Event Control di Inspektur Chrome. Mungkin itu juga cara lintas browser untuk memecahkan situasi rumit di mana bahkan F8 atau mengklik kanan mouse menyembunyikan popup lagi:

masukkan deskripsi gambar di sini

jan
sumber
1

Rekatkan Javascript berikut di konsol pengembang browser:

// 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);
EdC
sumber
0

Saya memiliki perbaikan yang lebih cepat karena saya tidak pandai menggunakan alat, inilah yang saya lakukan.

event.originalEvent.preventDefault();
event.originalEvent.stopImmediatePropagation();
event.originalEvent.stopPropagation();
Himanshu Pant
sumber
-1

Jika Anda membuka Chrome DevTools dan kemudian memicu inspektur elemen menggunakan pintasan keyboard, itu akan menyelesaikan masalah.

Mac: Cmd+Opt+J laluCmd+Opt+C

Windows: Ctrl+Shift+J laluCtrl+Shift+C

[1]

applemonkey496
sumber