Perguntas frequentes

Se você não encontrar uma resposta para sua pergunta aqui, consulte as Perguntas frequentes da Chrome Web Store, a tag [google-chrome-extension] no Stack Overflow, no grupo Chromium-extensions ou na ajuda da loja.

Geral

O que são as extensões do Google Chrome?

As extensões do Google Chrome são aplicativos executados no navegador Chrome e fornecem do Google, integração com sites ou serviços de terceiros e navegação personalizada experiências

Como posso configurar o Chrome para o desenvolvimento de extensões?

Se você usar uma versão do Chrome compatível com extensões, você já terá tudo você precisa começar a criar uma extensão própria. Para começar, ative o modo de desenvolvedor.

Clique no ícone do menu do Google Chrome e selecione Extensões no menu Ferramentas. Verifique se o "modo de desenvolvedor" está marcada no canto superior direito. Agora é possível atualizar extensões, carregar um diretório de arquivos descompactado como se fosse uma extensão empacotada e muito mais. Para um completo, consulte Como começar.

Quais tecnologias são usadas para criar extensões para o Chrome?

As extensões são escritas usando as mesmas tecnologias da Web padrão que os desenvolvedores usam para criar e sites. O HTML é usado como linguagem de marcação de conteúdo, o CSS é usado para o estilo e o JavaScript para e scripting. Como o Chrome é compatível com HTML5 e CSS3, os desenvolvedores podem usar a versão mais recente como telas e animações CSS em suas extensões. As extensões também têm acesso a várias APIs JavaScript que ajudam a executar funções como codificação JSON e interação com no navegador.

As extensões são buscadas na web sempre que o navegador é carregado?

As extensões são baixadas pelo navegador Chrome após a instalação e posteriormente executadas fora do no disco local para acelerar o desempenho. No entanto, se uma nova versão da extensão for enviada on-line, ele será automaticamente baixado em segundo plano para todos os usuários que tiverem a extensão instalado. As extensões também podem fazer solicitações de conteúdo remoto a qualquer momento para interagir com um serviço da Web ou acessar novos conteúdos da Web.

Como determino qual versão do Chrome será implantada em qual canal?

Para determinar qual versão do Chrome está disponível atualmente em cada uma das diferentes plataformas, acesse omahaproxy.appspot.com. Nesse site, você verá os dados em um formato semelhante a:

cf,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cf,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cf,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,canary,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cros,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cros,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####

Cada linha representa informações sobre uma combinação diferente de plataforma e canal. O(a) listado(a) As plataformas são cf (Google Chrome Frame), linux, mac, win e cros (Google ChromeOS). A os canais listados são canary, dev, beta e stable. Os dois números de quatro partes após o representam as versões atuais e anteriores do Chrome implantadas no canal da plataforma combinação. O restante das informações são metadados sobre quando os lançamentos foram enviados pela primeira vez, conforme e os números de revisão associados a cada build.

Recursos

As extensões podem fazer solicitações Ajax entre domínios?

Sim. As extensões podem fazer solicitações entre domínios. Consulte esta página para mais informações.

As extensões podem usar serviços da web de terceiros?

Sim. As extensões são capazes de fazer solicitações Ajax entre domínios para que possam chamar APIs remotas diretamente. As APIs que fornecem dados no formato JSON são particularmente fáceis de usar.

As extensões podem codificar/decodificar dados JSON?

Sim, como o V8 (mecanismo JavaScript do Chrome) oferece suporte a JSON.stringify e JSON.parse de forma nativa, você pode usar essas funções nas suas extensões, conforme descrito aqui, sem incluir quaisquer bibliotecas JSON no seu código.

As extensões podem armazenar dados localmente?

Sim, as extensões podem usar localStorage para armazenar dados de string permanentemente. Usando o navegador integrado do Chrome JSON, é possível armazenar estruturas de dados complexas em localStorage. Para extensões que precisam executar consultas SQL em seus dados armazenados, o Chrome implementa bancos de dados SQL do lado do cliente, que também podem ser usadas.

As extensões podem usar o OAuth?

Sim, existem extensões que usam OAuth para acessar APIs de dados remotos. A maioria dos desenvolvedores conveniente para usar uma biblioteca JavaScript OAuth para simplificar o processo de assinatura do OAuth solicitações.

As extensões podem criar uma interface fora da página da Web renderizada?

Sim, sua extensão pode adicionar botões à interface do usuário do navegador Chrome. Consulte navegador ações e ações na página para mais informações.

Uma extensão também pode criar notificações pop-up, que existem fora da janela do navegador. Consulte a notificações na área de trabalho para mais detalhes.

As extensões podem ouvir cliques nas guias e nos botões de navegação do Chrome?

Não. As extensões são limitadas a detectar os eventos descritos na documentação da API.

Duas extensões podem se comunicar uma com a outra?

Sim, as extensões podem transmitir mensagens para outras extensões. Consulte a documentação sobre a transmissão de mensagens. para mais informações.

As extensões podem usar o Google Analytics?

Sim. Como as extensões são criadas como sites, elas podem usar o Google Analytics para acompanhar uso. No entanto, é necessário modificar o código de acompanhamento para extrair uma versão HTTPS do arquivo biblioteca. Veja este tutorial para mais informações sobre como fazer isso.

As extensões podem modificar os URLs chrome://?

Não. As APIs de extensões foram projetadas para minimizar os problemas de compatibilidade com versões anteriores que podem surgir. quando novas versões do navegador são enviadas. Permitir scripts de conteúdo em URLs chrome:// significaria que os desenvolvedores comecem a confiar no DOM, CSS e JavaScript dessas páginas para permanecer igual. No melhor dos casos, essas páginas não puderam ser atualizadas tão rapidamente quanto estão sendo atualizadas agora. No pior dos casos, isso pode significar que uma atualização em uma dessas páginas poderia fazer com que uma extensão quebrar, fazendo com que as principais partes do navegador parem de funcionar para os usuários dessa extensão.

A substituição do conteúdo hospedado nesses URLs é totalmente permitida porque força um desenvolvedor de extensão a implementar todas as funcionalidades que ele quer, sem depender de implementação interna do navegador para permanecer a mesma.

As extensões podem abrir pop-ups de ação da página/navegador sem interação do usuário?

Não, os pop-ups só podem ser abertos se o usuário clicar na página ou ação do navegador correspondente. Um não pode abrir o pop-up de maneira programática.

As extensões podem manter os pop-ups abertos depois que o usuário clica para sair deles?

Não, os pop-ups fecham automaticamente quando o usuário foca em alguma parte do navegador fora da pop-up. Não será possível manter o pop-up aberto depois que o usuário sair.

As extensões podem ser notificadas quando são instaladas/desinstaladas?

Você pode detectar o evento runtime.onInstalled para receber uma notificação quando a extensão for instalado ou atualizado, ou quando o próprio Chrome for atualizado. Não há evento correspondente para quando a extensão será desinstalada.

Desenvolvimento

Como criar uma interface de usuário para minha extensão?

As extensões usam HTML e CSS para definir as interfaces do usuário. Assim, você pode usar controles de formulário padrão para criar sua IU ou estilizar a interface com CSS, como você faria com uma página da Web. Além disso, as extensões pode adicionar alguns elementos de IU limitados ao próprio Chrome.

Quantos dados posso armazenar no localStorage?

As extensões podem armazenar até 5 MB de dados em localStorage.

Como criar um menu de opções para meu aplicativo?

Você pode permitir que os usuários definam opções para sua extensão criando uma página de opções, que é uma página HTML simples que será carregada quando um usuário clicar nas “opções” da sua extensão. Essa página pode ler e gravar configurações no localStorage ou até mesmo enviar opções a um servidor da Web para que eles podem ser persistidos em vários navegadores.

Quais ferramentas de depuração estão disponíveis para desenvolvedores de extensões?

As ferramentas de desenvolvedor integradas do Chrome podem ser usadas para depurar extensões e páginas da Web. Ver isto tutorial sobre depuração de extensões para mais informações.

Por que as correspondências de caracteres curinga não funcionam para domínios de nível superior (TLDs)?

Não é possível usar padrões de correspondência de caracteres curinga como http://google.*/* para corresponder a TLDs (como http://google.es e http://google.fr) devido à complexidade de restringir esse tipo de correspondem somente aos domínios desejados.

No exemplo de http://google.*/*, os domínios do Google seriam correspondidos, mas o mesmo http://google.someotherdomain.com. Além disso, muitos sites não têm todos os TLDs dos seus domínio. Por exemplo, suponha que você queira usar http://example.*/* para corresponder a http://example.com e http://example.es, mas http://example.net é um site hostil. Se sua extensão tiver um bug, o site hostil poderá atacar sua extensão para obter acesso ao mais privilégios.

É necessário enumerar explicitamente os TLDs em que você quer executar a extensão.

Por que a API de gerenciamento não dispara eventos quando minha extensão é instalada/desinstalada?

A API de gerenciamento foi criada para ajudar a criar extensões de substituição de páginas de novas guias. Não era tem como objetivo disparar eventos de instalação/desinstalação da extensão atual.

Como uma extensão pode determinar se está sendo executada pela primeira vez?

Você pode detectar o evento runtime.onInstalled. Consulte esta entrada de perguntas frequentes.

Recursos e bugs

Acho que encontrei um bug! Como posso ter certeza de que ele será corrigido?

Ao desenvolver uma extensão, você pode encontrar um comportamento que não corresponde às extensões e pode ser o resultado de um bug no Chrome. A melhor coisa a fazer é garantir um relatório de problema apropriado seja preenchido e a equipe do Chromium tenha informações suficientes para reproduzir o do seu modelo.

Siga as etapas abaixo para garantir isso:

  1. Crie uma extensão de teste mínima que demonstre o problema que você deseja denunciar. Isso deve ter o mínimo de código possível para demonstrar o bug. Geralmente, ele deve ser Até 100 linhas de código. Muitas vezes, os desenvolvedores descobrem que não conseguem reproduzir os problemas dessa forma, o que é um bom indicador de que o bug está no código dele.
  2. Pesquise no Issue Tracker em http://crbug.com para saber se alguém informou um problema semelhante problema. A maioria dos problemas relacionados a extensões fica em component=Platform>Extensions. Portanto, para procurar um bug de extensão relacionado à função chrome.tabs.executeScript (por exemplo), pesquise por "component=Platform>Extensions Type=Bug chrome.tabs.executeScript", o que lhe dará esta lista de resultados.
  3. Se você encontrar um bug que descreva seu problema, clique no ícone de estrela para receber uma notificação quando ele acontecer recebe uma atualização. Não responda ao bug dizendo "eu também" ou pergunte "quando isso vai corrigidos?"; essas atualizações podem fazer com que centenas de e-mails sejam enviados. Só adicione um comentário se tiver informações úteis (como um caso de teste melhor ou uma sugestão de correção) que possam ser úteis.
  4. Se você não encontrou nenhum bug apropriado para marcar com estrela, envie um novo relatório de problemas em http://crbug.com/new. Seja o mais explícito possível ao preencher este formulário: escolha um título descritivo, explique o etapas para reproduzir o bug e descrever o comportamento esperado e real. Anexar seu teste exemplo ao relatório e adicionar capturas de tela, se apropriado. Quanto mais fácil for o relatório, outras pessoas para reproduzir o problema, maiores as chances de que o bug seja corrigido imediatamente.
  5. Aguarde a atualização do bug. A maioria dos bugs novos passa por triagem no prazo de uma semana, às vezes demoram mais para serem atualizadas. Não responda ao bug para perguntar quando o problema será corrigido. Se seu bug não for modificado após duas semanas, poste uma mensagem no grupo de discussão com um link para o bug.
  6. Se você informou o bug no grupo de discussão e foi direcionado para esta entrada de Perguntas frequentes, responda à conversa original com um link para o bug que você marcou com estrela ou denunciou. Assim, mais fácil para outras pessoas com o mesmo problema encontrarem o bug correto.

Quero solicitar um recurso. Como faço para informar isso?

Se você identificar um recurso (especialmente relacionado a uma API experimental) que pode ser adicionado a melhorar a experiência de desenvolvimento de extensões, garantir que uma solicitação adequada seja registrada no problema rastreador.

Siga as etapas abaixo para garantir isso:

  1. Pesquise no Issue Tracker em http://crbug.com para ver se alguém solicitou uma um recurso semelhante. A maioria das solicitações relacionadas a extensões está registrada em component=Platform>Extensions dessa plataforma para procurar uma solicitação de recurso de extensão relacionada a atalhos do teclado (por exemplo), pesquise "component=Platform>Extensions Type=Feature shortcuts", que fornecerá esta lista de resultados.
  2. Se você encontrar um tíquete que corresponde à solicitação, clique no ícone de estrela para receber uma notificação quando o bug aparecer. recebe uma atualização. Não responda ao bug dizendo "eu também" ou pergunte "quando isso vai implemented?"; essas atualizações podem fazer com que centenas de e-mails sejam enviados.
  3. Se você não encontrou um tíquete apropriado para marcar com estrela, envie uma nova solicitação em http://crbug.com/new. Tenha o mais detalhado possível ao preencher este formulário: escolha um título descritivo e explique exatamente qual recurso você gostaria e como planeja usá-lo.
  4. Aguarde a atualização do tíquete. A maioria das novas solicitações é submetida à triagem no prazo de uma semana, embora possa às vezes demoram mais para serem atualizadas. Não responda ao tíquete para perguntar quando o recurso será lançado adicionados. Se seu tíquete não for modificado após duas semanas, envie uma mensagem para o grupo de discussão com um link para a solicitação.
  5. Se você denunciou sua solicitação originalmente no grupo de discussão e foi direcionado para estas perguntas frequentes entrada, responda à conversa original com um link para o tíquete que você abriu ou marcou com estrela. Isso vai para que outras pessoas com a mesma solicitação encontrem o tíquete correto mais facilmente.