Como inspecionar o elemento html que desaparece do DOM com o foco perdido?

137

Estou tentando inspecionar propriedades CSS de uma entrada em uma célula da tabela. A entrada aparece no clique e desaparece com o foco perdido, como quando tento inspecioná-la. Como posso fazer isso para não perder o foco enquanto mudo para outra janela (o inspetor)?

Rogelio Triviño
fonte
3
não é a solução sobre esta questão não é adequado aqui
Rogelio Triviño
1
A solução é muito adequado
Jonathan
2
Existem outras perguntas resolvidas com esta resposta e foi minha primeira tentativa, mas nessa situação, o estado: focus é perdido quando você muda do navegador para a janela Ferramentas do desenvolvedor do Chrome e o item desejado a ser verificado também desaparece. Estou falando de elementos DOM que aparecem no clique e desaparecem com o foco perdido.
Rogelio Triviño

Respostas:

144

No navegador Chrome, abra as Ferramentas do desenvolvedor, selecione a guia Elementos e abra o menu contextual do nó pai do elemento que você deseja inspecionar. No menu contextual, clique em Quebrar em > Modificações de subárvore .

Depois, basta clicar na página e entrar no inspetor sem perder o foco ou perder o elemento que deseja inspecionar.

insira a descrição da imagem aqui

Rogelio Triviño
fonte
5
Existe alguma maneira no FF também?
cara
2
obrigado, depois de horas bloqueadas, obtive esta solução e decidi escrever a pergunta e a solução aqui, com o tempo é a minha principal fonte de reputação aqui, você sabe, não tenho tempo para perguntas como "como você pode fazer 2 + 2 em java? "
Rogelio Triviño
Como você encontra o nó pai do elemento que deseja inspecionar? Eu tenho o botão no qual clico para abrir o elemento no inspetor, mas o pop-up aparentemente não está relacionado no DOM.
Michael
sim, às vezes o javascript cria novos elementos diretamente no corpo ou nos principais elementos DOM relacionados. Se o seu código não for problema, você deve saber onde seu javascript está criando a coisa; caso contrário, talvez você deva interromper as modificações da subárvore BODY e verificar as ferramentas de desenvolvimento onde exatamente está criando novos elementos dom (não precisa ser o direto pai)
Rogelio Triviño 04/01
Para quem está confuso sobre o menu contextual, é o menu de três pontos na extrema esquerda do nó dom.
palerdot 31/01
92

Você pode capturar o elemento que desaparece se você pausar a execução do JavaScript com um atalho de teclado sem mover o mouse. Veja como você faz isso no Chrome:

  1. Abra as Ferramentas do desenvolvedor e vá para Fontes.
  2. Observe o atalho para pausar a execução do script— F8.

    Pausar a execução do script

  3. Interaja com a interface do usuário para que o elemento apareça.

  4. Hit F8.
  5. Como você pode mover o mouse, inspecione o DOM, qualquer que seja. O elemento ficará lá.

Esse truque também funciona no Firefox e em outros navegadores modernos.

mxxk
fonte
12
Isso é ótimo para muitas coisas - mas alguns scripts ainda serão acionados antes que o depurador seja bloqueado. Por exemplo, minha caixa de seleção de preenchimento automático oculta todas as opções antes da pausa dos scripts - tornando muito difícil ajustar os estilos interativamente.
Mir
Infelizmente, isso é apenas uma dica do cromo, mas resolvi porque eu tentei isso sozinho.
webwake
1
@webwake, sim, este exemplo em particular está no Chrome, mas a maioria dos navegadores modernos permite interromper a execução do script usando um atalho de teclado.
mxxk
Isso funcionou perfeitamente e foi tão fácil! Nota: é `⌘ +` pausar a execução do script no Chrome para Mac.
Jordan Gray
1
É bom ouvir @JordanGray. Você quis dizer -backslash? Para mim, diz tanto como F8funciona.
Mxxk
73

Se tudo mais falhar, digite isso no console:

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

Então você tem 5 segundos (ou altere o valor para qualquer outra coisa) para fazer com que o que você deseja depurar apareça.

Nenhuma das outras respostas funcionou para mim - a árvore do DOM continuava sendo modificada (ou seja, as coisas com as quais me preocupo desapareciam) logo antes do script fazer uma pausa.

Nick Farina
fonte
7
Esta solução é bastante hacky, mas na verdade faz o trabalho! Obrigado!
Manjar
1
A solução simples mais confiável de todas.
James
13

Não tenho certeza se isso funciona na sua situação, mas normalmente (e, em todos os casos, vale a pena mencionar a esse respeito, pois é uma ótima ferramenta) nas Ferramentas para Desenvolvedor do Chrome, você pode simular estados de elementos e um também :focus.

Para fazer isso, vá para a Elementsguia nas Ferramentas do desenvolvedor e verifique se você está na Stylesseção à direita (esse deve ser o local padrão quando você inicia as Ferramentas do desenvolvedor). Agora, apenas com os estilos no canto superior direito, você tem um ícone Toggle Element State. Quando você clicar nele você pode simular :active, :hover, :focuse :visitedpara o elemento selecionado na esquerda, na sua opinião código.

insira a descrição da imagem aqui

Dumba F.
fonte
3
Há outras questões resolvidas com esta resposta, e foi a minha primeira tentativa, mas nesta situação, a: estado foco é perdido quando você muda a partir do navegador para a janela Developer Tools do Chrome
Rogelio Triviño
9

No Chrome, na página de ferramentas do desenvolvedor da página em teste ... clique no menu de opções e abra as configurações de preferências ... em DevTools, ative 'Emular uma página focada'

Em seguida, na página de teste, faça com que os elementos apareçam. Isso funcionou para manter meus resultados de pesquisa pop-up focados em permanecer na tela para que eu pudesse trabalhar com ele.

user10864281
fonte
8

Não é uma solução real, mas geralmente funciona (:

  1. Focar o elemento
  2. Clique com o botão direito do mouse no menu de contexto
  3. Mover para ferramentas do desenvolvedor

Inspecionando a entrada focalizável

Dmitry Vyprichenko
fonte
1
ainda funciona no Chrome a partir de janeiro de 2020, obrigado por isso! solução alternativa agradável
manroe 24/01
2

Eu tive uma situação muito difícil e nenhuma resposta estava funcionando daqui (não verifiquei as respostas alterando o contêiner, que é o corpo para mim ou o evento original, porque não sei disso). Finalmente, encontrei uma solução alternativa ao interromper os pontos de interrupção do Control Event Listener no Chrome Inspector. Talvez essa seja também uma maneira de quebrar o navegador para situações complicadas em que mesmo o F8 ou o botão direito do mouse oculta o pop-up novamente:

insira a descrição da imagem aqui

jan
fonte
1

Cole o seguinte Javascript no console do desenvolvedor do navegador:

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

Eu tenho uma correção mais rápida, pois não sou muito bom em usar ferramentas, eis o que faço.

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

Se você abrir o Chrome DevTools e acionar o inspetor de elementos usando atalhos de teclado, ele deverá resolver o problema.

Mac: Cmd+Opt+J e depoisCmd+Opt+C

Windows: Ctrl+Shift+J e depoisCtrl+Shift+C

[1]

applemonkey496
fonte