Descrição
Use a API chrome.devtools.inspectedWindow para interagir com a janela inspecionada: obtenha o ID da guia da página inspecionada, avalie o código no contexto da janela inspecionada, recarregue a página ou obtenha a lista de recursos na página.
Manifesto
Use chrome.devtools.inspectedWindow para interagir com a janela inspecionada: obtenha o ID da guia da página inspecionada, avalie o código no contexto da janela inspecionada, recarregue a página ou obtenha a lista de recursos na página.
Consulte o resumo das APIs do DevTools para uma introdução geral ao uso das APIs das ferramentas de desenvolvimento.
Visão geral
A propriedade tabId fornece o identificador da guia que pode ser usado com as chamadas de API chrome.tabs.*. No entanto, observe que a API chrome.tabs.* não é exposta às páginas de extensão das Ferramentas para desenvolvedores por motivos de segurança. Você precisará transmitir o ID da guia para a página em segundo plano e invocar as funções da API chrome.tabs.* de lá.
O método reload pode ser usado para recarregar a página inspecionada. Além disso, o caller pode especificar uma substituição para a string de user agent, um script que será injetado no início do carregamento de página ou uma opção para forçar o recarregamento de recursos em cache.
Use a chamada getResources e o evento onResourceContent para receber a lista de recursos (documentos, folhas de estilo, scripts, imagens etc.) na página inspecionada. Os métodos getContent e setContent da classe Resource, junto com o evento onResourceContentCommitted, podem ser usados para oferecer suporte à modificação do conteúdo do recurso, por exemplo, por um editor externo.
Executar código na janela inspecionada
O método eval permite que as extensões executem código JavaScript no contexto da página inspecionada. Esse método é eficiente quando usado no contexto certo e perigoso quando usado de forma inadequada. Use o método tabs.executeScript, a menos que você precise da funcionalidade específica
fornecida pelo método eval.
Estas são as principais diferenças entre os métodos eval e tabs.executeScript:
- O método
evalnão usa um mundo isolado para o código que está sendo avaliado. Portanto, o estado do JavaScript da janela inspecionada fica acessível ao código. Use esse método quando for necessário acessar o estado JavaScript da página inspecionada. - O contexto de execução do código que está sendo avaliado inclui a API do console das Ferramentas para desenvolvedores.
Por exemplo, o código pode usar
inspecte$0. - O código avaliado pode retornar um valor que é transmitido para o callback da extensão. O valor retornado precisa ser um objeto JSON válido (pode conter apenas tipos primitivos de JavaScript e referências acíclicas a outros objetos JSON). Tenha muito cuidado ao processar os dados recebidos da página inspecionada. O contexto de execução é controlado essencialmente pela página inspecionada. Uma página maliciosa pode afetar os dados retornados à extensão.
Uma página pode incluir vários contextos de execução JavaScript diferentes. Cada frame tem o próprio contexto, além de um contexto adicional para cada extensão que tem scripts de conteúdo em execução nesse frame.
Por padrão, o método eval é executado no contexto do frame principal da página inspecionada.
O método eval usa um segundo argumento opcional que pode ser usado para especificar o contexto em que o código é avaliado. Esse objeto options pode conter uma ou mais das seguintes chaves:
frameURL- Use para especificar um frame diferente do principal da página inspecionada.
contextSecurityOrigin- Use para selecionar um contexto no frame especificado de acordo com a origem da Web.
useContentScriptContext- Se for verdadeiro, execute o script no mesmo contexto dos scripts de conteúdo das extensões. (Equivalente a especificar a própria origem da Web das extensões como a origem de segurança do contexto.) Isso pode ser usado para trocar dados com o script de conteúdo.
Exemplos
O código a seguir verifica a versão do jQuery usada pela página inspecionada:
chrome.devtools.inspectedWindow.eval(
"jQuery.fn.jquery",
function(result, isException) {
if (isException) {
console.log("the page is not using jQuery");
} else {
console.log("The page is using jQuery v" + result);
}
}
);
Para testar essa API, instale os exemplos da API devtools no repositório chrome-extension-samples (link em inglês).
Tipos
Resource
Um recurso na página inspecionada, como um documento, um script ou uma imagem.
Propriedades
-
url
string
O URL do recurso.
-
getContent
void
PromessaRecebe o conteúdo do recurso.
A função
getContenttem esta aparência:(callback?: function) => {...}
-
callback
função opcional
O parâmetro
callbacktem esta aparência:(response: object) => void
-
resposta
objeto
PendenteUm objeto que contém o conteúdo do recurso e a codificação dele.
-
conteúdo
string
Conteúdo do recurso (possivelmente codificado).
-
encoding
string
Vazio se o conteúdo não estiver codificado. Caso contrário, o nome da codificação. Atualmente, apenas a codificação de base64 é suportada.
-
-
-
retorna
Promise<object>
PendenteUma função que recebe o conteúdo do recurso quando a solicitação é concluída.
As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
-
-
setContent
void
PromessaDefine o conteúdo do recurso.
A função
setContenttem esta aparência:(content: string, commit: boolean, callback?: function) => {...}
-
conteúdo
string
Novo conteúdo do recurso. No momento, apenas recursos com o tipo de texto são aceitos.
-
commit
booleano
Verdadeiro se o usuário tiver terminado de editar o recurso e o novo conteúdo dele precisar ser mantido. Falso se for uma mudança pequena enviada durante a edição do recurso pelo usuário.
-
callback
função opcional
O parâmetro
callbacktem esta aparência:(error?: object) => void
-
erro
objeto opcional
Definido como "undefined" se o conteúdo do recurso foi definido com sucesso. Caso contrário, descreve o erro.
-
-
retorna
Promise<object>
PendenteUma função chamada após a conclusão da solicitação.
As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
-
Propriedades
tabId
O ID da guia que está sendo inspecionada. Esse ID pode ser usado com chrome.tabs.* Secret Manager.
Tipo
número
Métodos
eval()
chrome.devtools.inspectedWindow.eval(
expression: string,
options?: object,
callback?: function,
): Promise<object>
Avalia uma expressão JavaScript no contexto do frame principal da página inspecionada. A expressão precisa ser avaliada como um objeto compatível com JSON. Caso contrário, uma exceção será gerada. A função "eval" pode informar um erro do lado do DevTools ou uma exceção do JavaScript que ocorre durante a avaliação. Em ambos os casos, o parâmetro result do callback é undefined. No caso de um erro do lado do DevTools, o parâmetro isException não é nulo e tem isError definido como "true" e code definido como um código de erro. No caso de um erro de JavaScript, isException é definido como "true" e value é definido como o valor de string do objeto gerado.
Parâmetros
-
expressão
string
Uma expressão a ser avaliada.
-
opções
objeto opcional
O parâmetro "options" pode conter uma ou mais opções.
-
frameURL
string opcional
Se especificada, a expressão será avaliada no iframe cujo URL corresponda ao especificado. Por padrão, a expressão é avaliada no frame superior da página inspecionada.
-
scriptExecutionContext
string opcional
Chrome 107 ou mais recenteAvalia a expressão no contexto de um script de conteúdo de uma extensão que corresponde à origem especificada. Se fornecido, scriptExecutionContext vai substituir a configuração "true" em useContentScriptContext.
-
useContentScriptContext
booleano opcional
Avalia a expressão no contexto do script de conteúdo da extensão de chamada, desde que o script de conteúdo já esteja injetado na página inspecionada. Caso contrário, a expressão não será avaliada, e o callback será invocado com o parâmetro de exceção definido como um objeto que tem o campo
isErrordefinido como "true" e o campocodedefinido comoE_NOTFOUND.
-
-
callback
função opcional
O parâmetro
callbacktem esta aparência:(response: object) => void
-
resposta
objeto
PendenteO resultado da avaliação e as informações de exceção.
-
exceptionInfo
objeto
Um objeto que fornece detalhes se uma exceção ocorreu ao avaliar a expressão.
-
código
string
Definido se o erro ocorreu no lado do DevTools antes da avaliação da expressão.
-
descrição
string
Definido se o erro ocorreu no lado do DevTools antes da avaliação da expressão.
-
detalhes
any[]
Definido se o erro ocorreu no lado do DevTools antes da avaliação da expressão. Contém a matriz dos valores que podem ser substituídos na string de descrição para fornecer mais informações sobre a causa do erro.
-
isError
booleano
Definido se o erro ocorreu no lado do DevTools antes da avaliação da expressão.
-
isException
booleano
Definido se o código avaliado gerar uma exceção não processada.
-
valor
string
Definido se o código avaliado gerar uma exceção não processada.
-
-
resultado
objeto
O resultado da avaliação.
-
-
Retorna
-
Promise<object>
PendenteUma função chamada quando a avaliação é concluída.
As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
getResources()
chrome.devtools.inspectedWindow.getResources(
callback?: function,
): Promise<Resource[]>
Recupera a lista de recursos da página inspecionada.
Parâmetros
Retorna
-
Promise<Resource[]>
PendenteUma função que recebe a lista de recursos quando a solicitação é concluída.
As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
reload()
chrome.devtools.inspectedWindow.reload(
reloadOptions?: object,
): void
Atualiza a página inspecionada.
Parâmetros
-
reloadOptions
objeto opcional
-
ignoreCache
booleano opcional
Quando for "true", o carregador vai ignorar o cache de todos os recursos da página inspecionada carregados antes do evento
loadser acionado. O efeito é semelhante a pressionar Ctrl+Shift+R na janela inspecionada ou na janela das Ferramentas para desenvolvedores. -
injectedScript
string opcional
Se especificado, o script será injetado em todos os frames da página inspecionada imediatamente após o carregamento, antes de qualquer um dos scripts do frame. O script não será injetado após recarregamentos subsequentes, por exemplo, se o usuário pressionar Ctrl+R.
-
userAgent
string opcional
Se especificada, a string vai substituir o valor do cabeçalho HTTP
User-Agentenviado durante o carregamento dos recursos da página inspecionada. A string também vai substituir o valor da propriedadenavigator.userAgentretornada a qualquer script em execução na página inspecionada.
-
Eventos
onResourceAdded
chrome.devtools.inspectedWindow.onResourceAdded.addListener(
callback: function,
)
Disparado quando um novo recurso é adicionado à página inspecionada.
Parâmetros
-
callback
função
O parâmetro
callbacktem esta aparência:(resource: Resource) => void
-
recurso
-
onResourceContentCommitted
chrome.devtools.inspectedWindow.onResourceContentCommitted.addListener(
callback: function,
)
Disparado quando uma nova revisão do recurso é confirmada (por exemplo, o usuário salva uma versão editada do recurso nas Ferramentas para desenvolvedores).