As Ferramentas de desenvolvedor do Chrome são ótimas, mas uma coisa que elas parecem não ter (que eu poderia encontrar) é uma maneira de encontrar a definição de uma função JavaScript. Isso seria super útil para mim, porque estou trabalhando em um site que inclui muitos arquivos JS externos. Claro que o grep resolve isso, mas no navegador seria muito melhor. Quero dizer, o navegador precisa saber disso, então por que não expô-lo? O que eu esperava era algo como:
- Selecione 'Inspecionar elemento' na página, que destaca a linha na guia Elementos
- Clique com o botão direito do mouse na linha e selecione 'Ir para a definição de função'
- O script correto é carregado na guia Scripts e salta para a definição da função
Primeiro, essa funcionalidade existe e só estou sentindo falta dela?
E, se não, acho que isso viria do WebKit, mas não consegui encontrar nada para solicitações de recursos da Ferramenta de Desenvolvedor ou o Bugzilla do WebKit .
javascript
google-chrome-devtools
Ryan DuVal
fonte
fonte
Respostas:
Digamos que estamos procurando a função denominada
foo
:foo\s*=\s*function
(pesquisafoo = function
com qualquer número de espaços entre esses três tokens),Outra variante para definição de função é
function\s*foo\s*\(
parafunction foo(
qualquer número de espaços entre esses três tokens.fonte
foo
. Há outros. E se a nossa função for, por exemplobar['foo']
? (Não há uma boa resposta para essa pergunta, até onde eu sei - é essencialmente "não escreva código complicado") #Foi lançado no Chrome em 26/08/2012. Não tenho certeza da versão exata, notei isso no Chrome 24.
Uma captura de tela vale um milhão de palavras:
Estou inspecionando um objeto com métodos no console. Clicar em "Mostrar definição da função" leva-me ao local no código-fonte em que a função está definida. Ou posso passar o mouse sobre a
function () {
palavra para ver o corpo da função em uma dica de ferramenta. Você pode inspecionar facilmente toda a cadeia de protótipos dessa maneira! CDT definitivamente rock !!!Espero que todos achem útil!
fonte
dir(myFunc)
findDefinition(myFunc)
? AFAIK que ainda não existe ...({1:somefunction})
clique com o botão direito do mouse na função dentro do objeto impresso.Você pode imprimir a função avaliando o nome dela no console, assim
isso não funcionará para funções internas, elas serão exibidas apenas em
[native code]
vez do código-fonte.EDIT : isso implica que a função foi definida dentro do escopo atual.
fonte
Atualização de 2016 : na versão 51.0.2704.103 do Chrome
Há um
Go to member
atalho (listado emsettings > shortcut > Text Editor
). Abra o arquivo que contém sua função (nosources
painel do DevTools) e pressione:ou no OS X:
Isso permite listar e alcançar membros do arquivo atual.
fonte
Outra maneira de navegar para o local de uma definição de função seria interromper o depurador em algum lugar em que você possa acessar a função e inserir o nome completo da função no console. Isso imprimirá a definição da função no console e fornecerá um link que, ao clicar, abre o local do script em que a função está definida.
fonte
Navegadores diferentes fazem isso de maneira diferente.
Primeiro abra a janela do console clicando com o botão direito do mouse na página e selecionando "Inspecionar elemento" ou pressionando F12.
No console, digite ...
Raposa de fogo
cromada
fonte
functionName.toSource()
também funciona nas versões mais recentes do chrome.stop
.no console do Chrome:
fonte
undebug(MyFunction)
para remover o ponto de interrupção novamente (depois de encontrar a implementação do método)Acho que a maneira mais rápida de localizar uma função global é simplesmente:
fonte
No Google chrome, ferramenta Inspecionar elementos, você pode visualizar qualquer definição de função Javascript.
fonte
Se você já estiver depurando, poderá passar o mouse sobre a função e a dica de ferramenta permitirá navegar diretamente para a definição da função:
Leitura adicional :
fonte
Eu tive um problema semelhante ao encontrar a fonte do método de um objeto. O nome do objeto era
myTree
e seu método eraload
. Coloquei um ponto de interrupção na linha em que o método foi chamado. Recarregando a página, a execução foi interrompida nesse ponto. Então, no console do DevTools, digitei o objeto juntamente com o nome do método, ou seja,myTree.load
e pressionei Enter. A definição do método foi impressa no console:Além disso, clicando com o botão direito do mouse na definição, você pode acessar sua definição no código-fonte:
fonte