Desenvolvimento de Extensões para o Google Chrome

Post on 26-Jun-2015

2.701 views 1 download

Transcript of Desenvolvimento de Extensões para o Google Chrome

Desenvolvendo Extensõespara o Google ChromeSérgio VilarDesenvolvedor de Interfaces, Redesoft

terça-feira, 29 de janeiro de 13

Introdução a extensões

terça-feira, 29 de janeiro de 13

O que são extensões

• Programas que incrementam funcionalidades ao Google Chrome

• São escritas em HTML, CSS e Javascript

• Se integram ao navegador fazendo uso da API de extensões

• Rodam em processos separados

terça-feira, 29 de janeiro de 13

O que uma extensão pode fazer?

• Consultar dados de serviços externos via XMLHttpRequest (permissão necessária no manifest.json)

• Modificar uma página, adicionar ou remover elementos

• Detectar eventos causados pelo usuário (click, hover, load, etc)

terça-feira, 29 de janeiro de 13

Interação com o usuário

• Browser ActionA extensão é acessível o tempo inteiro

• Page ActionA extensão é acessível apenas sob determinadas condições

• Background TasksA extensão roda em plano de fundo e não fica visível para o usuário

terça-feira, 29 de janeiro de 13

Browser Action

• A extensão fica visível na forma de um botão na barra de extensões e pode ser visualizada/acessada a qualquer momento.

• Pode-se adicionar uma popup que abre quando o botão da extensão for acionado

terça-feira, 29 de janeiro de 13

Page Action

• A extensão fica visível na forma de um ícone na barra de endereços

• O Ícone da extensão só é visível se atender algumas condições

• No exemplo ao lado, o ícone só é visível quando página possui um endereço para um Feed

terça-feira, 29 de janeiro de 13

Background Tasks

• A extensão roda em background e não fica visível para o usuário, uma Background Page é automaticamente criada.

terça-feira, 29 de janeiro de 13

Construindo uma extensão

terça-feira, 29 de janeiro de 13

Componentes de uma extensão

• manifest.json

• background.htm

• Content Scripts (todo o seu Javascript)

• Assets (CSS, Imagens, etc)

terça-feira, 29 de janeiro de 13

manifest.json

• Arquivo de configuração da extensão

• Definição de nome da extensão, descrição, ícones, etc.

• Especifica a Background Page, Content Scripts, Actions, etc.

• Permissões para XMLHttpRequest

• Este arquivo é obrigatório e caso tenha algum erro de sintaxe, a extensão não será carregada

terça-feira, 29 de janeiro de 13

manifest.json

Exemplo:

{ "name": "Grooveshark Keyboard Shortcuts", "description": "Use the F7, F8 and F9 keys to play, pause, advance and return your songs on Grooveshark", "version": "1.1", "background": { "scripts": ["jquery.js", "background.js"] }, "permissions": [ "tabs", "http://*/*", "https://*/*" ], "manifest_version": 2, "icons" : { "48" : "icon-48.png", "128" : "icon-128.png" }}

terça-feira, 29 de janeiro de 13

background.htm

• Uma extensão pode ter apenas uma Background Page

• A Background Page estará rodando enquanto o Google Chrome estiver aberto

• Uma extensão que possua Content Scripts, terá automaticamente uma Background Page

terça-feira, 29 de janeiro de 13

Content Scripts

• Arquivos Javascript onde se concentra toda a lógica da sua extensão

• Você pode incluir jQuery nos Content Scripts (OH YEAH!!)

• Podem acessar o objeto DOM da página

• São usados para acessar a API de Extensões do Google Chrome

terça-feira, 29 de janeiro de 13

APIs

terça-feira, 29 de janeiro de 13

APIs

• chrome.extension.*

• chrome.tabs.*

• chrome.bookmarks*

• chrome.windows*

• etc...

terça-feira, 29 de janeiro de 13

APIs Assíncronas

• 80% das APIs de extensão do Google Chrome são Assíncronas, isso quer dizer que você quase sempre deve usar uma função de retorno:

chrome.tabs.query({windowType : 'normal'}, function(tabs){

! $(tabs).each(function(i, item){

! ! if(strpos(item.title, "Grooveshark")){! ! ! tab = item;! ! ! !! ! }

! });

! chrome.tabs.executeScript(tab.id, {file: "jquery.js"})! chrome.tabs.executeScript(tab.id, {file: "play.js"})

});

terça-feira, 29 de janeiro de 13

Message Passing

• Permite a comunicação entre Content Scripts, Background Page, etc

Background Page Content Scripts

terça-feira, 29 de janeiro de 13

Estudo de casoGrooveshark Keyboard Shortcuts

terça-feira, 29 de janeiro de 13

Grooveshark Keyboard Shortcuts

• Extensão que dá ao usuário a possibilidade de pausar, avançar e retroceder as músicas do Grooveshark através das teclas F7, F8 e F9

terça-feira, 29 de janeiro de 13

Arquivos que compõem a extensão

• manifest.json

• jquery.js

• inject.js

• background.js

• play.js, next.js e prev.js

terça-feira, 29 de janeiro de 13

Workflow da extensão

background.js

inject.js

play.jsprev.js next.js

terça-feira, 29 de janeiro de 13

Workflow da extensão: inject.js

• Possui uma instância carregada em cada página do navegador

• Quando detecta uma das teclas de atalho, envia uma mensagem para o background.js

terça-feira, 29 de janeiro de 13

Workflow da extensão

background.js

inject.js

play.jsprev.js next.js

terça-feira, 29 de janeiro de 13

Workflow da extensão: background.js

• Recebe a mensagem do inject.js e identifica a aba na qual o Grooveshark está aberto

• Insere o arquivo correspodente (next.js, play.js ou prev.js) na aba na qual o Grooveshark está aberto

terça-feira, 29 de janeiro de 13

Workflow da extensão

background.js

inject.js

play.jsprev.js next.js

terça-feira, 29 de janeiro de 13

next.js, play.js e prev.js

• Ao ser inserido numa aba, aciona o botão correspondente para pausar, avançar ou retroceder

terça-feira, 29 de janeiro de 13

É isso aí, até a próxima!vilar@me.comhttp://about.me/vilarhttp://slideshare.net/sergiovilarhttp://github.com/sergiovilar

terça-feira, 29 de janeiro de 13