DOM'dan kaybolan html öğesini odak kaybı durumunda nasıl inceleyebilirim?


137

Bir girdiden bir tablo hücresine CSS özelliklerini incelemeye çalışıyorum. Girdi tıklandığında beliriyor ve incelemeye çalıştığım zaman olduğu gibi odak kaybolduğunda kayboluyor. Başka bir pencereye (müfettiş) geçerken odağımı kaybetmemek için nasıl yapabilirim?



3
değil, bu sorunun çözümü burada uygun değil
Rogelio Triviño

1
Çözüm çok uygun
Jonathan

2
Bu cevapla çözülen başka sorular da var ve bu benim ilk denememdi, ancak bu durumda: tarayıcıdan Chrome Geliştirici Araçları penceresine geçtiğinizde odak durumu kayboluyor ve kontrol etmek istediğiniz öğe de kayboluyor. Tıklamada görünen ve kaybolduğunda kaybolan DOM öğelerinden bahsediyorum.
Rogelio Triviño

Yanıtlar:


144

Chrome tarayıcısında, Geliştirici Araçlarını açın ve Öğeler sekmesini seçin , ardından incelemek istediğiniz öğenin üst düğümünün bağlamsal menüsünü açın, bağlamsal menüde Kes > Alt ağaç değişiklikleri seçeneğine tıklayın .

Daha sonra sadece sayfayı tıklamanız yeterlidir ve odak noktanızı kaybetmeden veya incelemek istediğiniz öğeyi kaybetmeden denetçiye geçersiniz.

görüntü açıklamasını buraya girin


5
FF'de de bir yol var mı?
dostum

2
teşekkürler, saatler tıkandıktan sonra bu çözümü aldım ve soruyu ve çözümü buraya yazmaya karar verdim, zamanla buradaki ana itibar kaynağım, bilirsiniz, "2 + 2 nasıl yapılır" gibi sorulara vaktim yok Java'da? "
Rogelio Triviño

İncelemek istediğiniz elemanın üst düğümünü nasıl bulursunuz? Öğeyi denetçide açmak için tıkladığım düğmeye sahibim, ancak pop-up'ın DOM ile ilgisiz olduğu anlaşılıyor.
Michael

evet, bazen javascript yeni öğeleri doğrudan gövde altında veya ilgili üst DOM öğelerinin altında oluşturur. Kodunuz sorun değilse, javascript'inizin şeyi nerede yarattığını bilmelisiniz, değilse, belki de BODY alt ağaç değişikliklerini kırmanız ve tam olarak yeni dom öğeleri yaratan geliştirme araçlarını kontrol etmeniz gerekir (doğrudan olmak zorunda değilsiniz) ebeveyn)
Rogelio Triviño

Bağlamsal menü hakkında kafası karışanlar için, dom düğümünün en solundaki üç nokta menüsüdür.
palerdot

92

JavaScript yürütmesini fareyi hareket ettirmeden klavye kısayoluyla duraklatırsanız, kaybolan öğeyi yakalayabilirsiniz. Bunu Chrome'da şu şekilde yapabilirsiniz:

  1. Geliştirici Araçlarını açın ve Kaynaklar'a gidin.
  2. Komut dosyası yürütmeyi duraklatmak için kısayolu not edin— F8.

    Komut dosyası yürütmeyi duraklat

  3. Öğenin görünmesini sağlamak için kullanıcı arayüzü ile etkileşim kurun.

  4. Hit F8.
  5. Farenizi nasıl hareket ettirebilirsiniz, DOM'u her ne şekilde inceleyebilirsiniz. Eleman orada kalacak.

Bu numara Firefox'ta ve diğer modern tarayıcılarda da çalışıyor.


12
Bu birçok şey için harikadır - ancak bazı komut dosyaları hata ayıklayıcı kilitlenmeden önce tetiklenmeye devam eder. Örneğin, otomatik tamamlama seçim kutum, komut dosyaları duraklatılmadan önce tüm seçenekleri gizler - bu da stilleri etkileşimli olarak değiştirmeyi çok zorlaştırır.
Mir

Ne yazık ki bu sadece bir krom ipucu, ancak neden kendim denediğimi çözdüm.
17:13 webwake

1
@webwake, evet bu belirli örnek Chrome'da, ancak çoğu modern tarayıcı, bir klavye kısayolu kullanarak komut dosyası yürütmeyi duraklatmanıza izin verir.
mxxk

Bu mükemmel çalıştı ve çok kolaydı! Not: Mac için Chrome'da komut dosyası yürütmeyi duraklatmak için "⌘ +" kullanılır.
Jordan Grey

1
@ JordanGray'i duymak güzel. Ters eğik çizgi mi demek istediniz? Benim için hem F8iş hem de iş diyor .
mxxk

73

Her şey başarısız olursa, bunu Konsol'a yazın:

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

Ardından, hata ayıklamak istediğiniz şeyin görünmesini sağlamak için 5 saniyeniz (veya değeri başka bir şeye değiştirin) var.

Diğer yanıtların hiçbiri benim için işe yaramadı - DOM ağacı , komut dosyası duraklatılmadan hemen önce değiştirilmeye devam etti (yani önem verdiğim şeyler kayboldu) .


7
Bu çözüm oldukça karmaşık, ama aslında işi yapıyor! Teşekkür ederim!
Manjar

1
Hepsinin en güvenilir basit çözümü.
James

13

Bunun sizin durumunuzda işe yarayıp yaramadığından emin değilsiniz, ancak normalde (ve her durumda bu konuda bahsetmeye değer, çünkü harika bir araç) Chrome Geliştirici Araçlarında öğe durumlarını simüle edebilirsiniz ve biri de öyle :focus.

Bunu yapmak Elementsiçin Geliştirici Araçlarındaki sekmeye gidin Stylesve sağdaki bölümde olduğunuzdan emin olun (bu, Geliştirici Araçlarını başlattığınızda varsayılan konum olmalıdır). Şimdi sağ üst köşedeki Tarzların hemen altında bir simge var Toggle Element State. Bunu tıkladığınızda simüle edebilirsiniz :active, :hover, :focusve :visitedelement için size kod görünümünde solda seçilmiş.

görüntü açıklamasını buraya girin


3
Bu yanıtla çözülen başka sorular da var ve bu benim ilk denememdi, ancak bu durumda: tarayıcıdan Chrome Geliştirici Araçları penceresine geçtiğinizde odak durumu kayboluyor
Rogelio Triviño

9

Test edilen sayfanın geliştirici araçları sayfasındaki Chrome'da ... seçenekler menüsünü tıklayın ve tercihler için ayarları açın ... DevTools altında 'Odaklanmış bir sayfayı taklit et' seçeneğini etkinleştirin

Ardından test sayfasında öğelerin görünmesine neden olun. Bu, pop-up arama sonuçlarımın ekranda kalmaya odaklanmasını sağlamak için çalıştı, böylece onunla çalışabilirim.


8

Gerçek bir çözüm değil, ancak genellikle işe yarıyor (:

  1. Öğeye odaklan
  2. Bağlam menüsü için sağ tıklayın
  3. Geliştirici araçlarına geçin

Odaklanabilir girdinin incelenmesi


1
Ocak 2020 itibarıyla hala Chrome'da çalışıyor, bunun için teşekkürler! güzel geçici çözüm
manroe

2

Çok zor bir durum yaşadım ve buradan hiçbir cevap işe yaramıyordu (cevapları, benim için beden olan kabı veya orijinal olayı değiştirerek doğrulamadım çünkü bilmiyorum). Sonunda, Chrome Inspector'da Kontrol Olayı İşleyici Kesme Noktalarını kırarak bir geçici çözüm buldum. Belki de bu, F8'in veya sağ tıklamanın bile pop-up'ı tekrar gizlediği karmaşık durumlar için bir çapraz tarayıcı yoludur:

görüntü açıklamasını buraya girin


1

Aşağıdaki Javascript'i tarayıcı geliştirici konsoluna yapıştırın:

// 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

Araçları kullanmakta pek iyi olmadığım için daha hızlı bir düzeltme yapıyorum, işte yaptığım şey.

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

-1

Chrome DevTools'u açar ve ardından klavye kısayollarını kullanarak öğe denetçisini tetiklerseniz, sorunu çözmesi gerekir.

Mac: Cmd+Opt+J ve sonraCmd+Opt+C

Windows: Ctrl+Shift+J ve sonraCtrl+Shift+C

[1]

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.