mozilla

Revision 272511 of FAQ Extensões

  • Slug da revisão: FAQ_Extensões
  • Título da revisão: FAQ Extensões
  • ID da revisão: 272511
  • Criado:
  • Autor: Toyux
  • É revisão atual? Não
  • Comentário
Etiquetas: 

Conteúdo da revisão

Esse é um guia rápido de respostas para as perguntas mais frequentes sobre o desenvolvimento de Extensões. Elas estão escritas

pensadas mais no Firefox, mas a maioria é fácil de ser transferida para o SeaMonkey, Thunderbird ou qualquer desses outros aplicativos.

Se você está procurando um lugar para começar, tente nosso tutorial, Construir uma Extensão ou

MozillaZine's Getting started tutorial. Use o

Extension Wizard para gerar um template para começar nele.

Tenha certeza de set development preferences.

Depurando

Você deve set development preferences antes de partir para depurar sua extensão.

O depurador em JavaScript Venkman pode ser viável em casos complexos, mas lembre-se de desligar a opção "Debug -> Exclude Browser Files" enquanto está trabalhando no código da extensão.

Como eu posso ver os erros no meu código?

Depois de set development preferences javascript.options.showInConsole para true, os erros serão mostrados no Console JavaScript. Note que apesar de seu nome todos os erros são mostrados lá.

Como eu posso mostrar o que minha extensão está fazendo?

Você pode usar o alert(), dump(), Components.utils.reportError(), ou até the console service para mostrar dados variáveis e o texto da depuração.

Por que meu código não roda corretamente?

Se o seu código não trabalha como o esperado, a primeira coisa que você deve fazer é checar o console JavaScript (veja sobre).

Um erro comum é tentar acessar a DOM (Document Object Model - Modelo de objeto do documento) de uma janela antes que ela esteja totalmente carregada. Isso acontece se você coloca o código de inicialização no topo do seu código -script- (i.e. fora de qualquer função). O conserto é usar um load para listar eventos para travar seu código até que a janela termine de carregar:

function exampleBrowserStartup(event)
{
  // coloque o código de inicialização aqui
}
window.addEventListener("load", exampleBrowserStartup, false);

Acessando um documento de uma página que não funciona

Para acessar um documento de uma página web atual através do browser.xul overlay, você deve usar o content.document, ao invés de apenas document que é o próprio documento da janela do navegador. Veja en:Working with windows in chrome code para mais detalhes. Você pode também, por padrão {{mediawiki.interwiki('en', 'XPCNativeWrapper', 'en:XPCNativeWrapper')}} que previne você de acessar através do acesso de um "script-defined objects" na página web e fazer outras tarefas.

Aparece um erro de análise XML, mas o arquivo parece correto!

Uma fonte comum de erros de análise (como texto vermelho com uma -------------^ abaixo) é um caracter & ou um < em seu código ou um valor de atributo, que tem uma função especial em XML. Por exemplo:

<button oncommand="window.open('http://example.com/q?param1=value&param2=val2')"/>

ou

<script>function lesser(a,b) { return a < b ? a : b; }</script>

O problema pode ser resolvido por uma das seguintes formas:

  1. substitua o caracter que não é representação de conflito XML (Exemplo: "&" -> "&amp;"<" -> "&lt;")
  2. (em caso de ser um nó de texto, como um código) coloque tags de CDATA ao redor:
    <script><![CDATA[
       function lesser(a,b) {
         return a < b ? a : b;
       }
     ]]></script>
  3. Coloque seu código em um arquivo separado e inclua o nome dele:
    <script type="application/x-javascript" src="seucodigo.js"/>

Código de Exemplo

A forma mais fácil para encontrar o código que você precisa para usar em algo útil é procurar uma extensão (ou parte do Mozilla mesmo) Isso faz o código e mostra como um código. (Os arquivos XPI e JAR usam o formato ZIP). Encontram-se algumas documentações em: lista de artigos relacionados com extensões no MDC, {{mediawiki.interwiki('en', 'Code_snippets', 'en:Code snippets')}}, e Example code page on MozillaZine.

Onde posso encontrar mais ajuda?

Por favor veja {{mediawiki.interwiki('en', 'Extensions:Other_Resources', 'en:Extensions:Other Resources')}} e Extensões:Comunidade.

Antes de pedir ajuda, tenha certeza de configurar as preferências de depuração e cheque o console JavaScript para mensagens relacionadas. Também, não esqueça de fazer uma pequena busca antes de perguntar. E leia este FAQ!

Categorias

Interwiki Language Link

{{ wiki.languages( { "en": "en/Extension_Frequently_Asked_Questions", "es": "es/Preguntas_frecuentes_sobre_Extensiones", "fr": "fr/Foire_aux_questions_sur_les_extensions", "it": "it/Domande_frequenti_sulle_Estensioni", "ja": "ja/Extension_Frequently_Asked_Questions" } ) }}

Fonte da revisão

<p>Esse é um guia rápido de respostas para as perguntas mais frequentes sobre o desenvolvimento de <a href="pt/Extens%c3%b5es">Extensões</a>. Elas estão escritas 
</p><p>pensadas mais no Firefox, mas a maioria é fácil de ser transferida para o SeaMonkey, Thunderbird ou qualquer desses outros aplicativos.
</p><p>Se você está procurando um lugar para começar, tente nosso tutorial, <a href="pt/Construir_uma_Extens%c3%a3o">Construir uma Extensão</a> ou 
</p><p><a class="external" href="http://kb.mozillazine.org/Getting_started_with_extension_development">MozillaZine's Getting started tutorial</a>. Use o 
</p><p><a class="external" href="http://ted.mielczarek.org/code/mozilla/extensionwiz/">Extension Wizard</a> para gerar um template para começar nele.
</p><p>Tenha certeza de <a class="external" href="http://kb.mozillazine.org/Setting_up_extension_development_environment">set development preferences</a>. 
</p>
<h3 name="Depurando"> Depurando </h3>
<p>Você deve  <a class="external" href="http://kb.mozillazine.org/Setting_up_extension_development_environment">set development preferences</a> antes de partir para depurar sua extensão.
</p><p>O depurador em JavaScript <a href="pt/Venkman">Venkman</a> pode ser viável em casos complexos, mas lembre-se de desligar a opção "Debug -&gt; Exclude Browser Files" enquanto está trabalhando no código da extensão.
</p>
<h4 name="Como_eu_posso_ver_os_erros_no_meu_c.C3.B3digo.3F"> Como eu posso ver os erros no meu código? </h4>
<p>Depois de <a class="external" href="http://kb.mozillazine.org/Setting_up_extension_development_environment">set development preferences</a>
<b>javascript.options.showInConsole</b> para <b>true</b>, os erros serão mostrados no Console JavaScript. Note que apesar de seu nome todos os erros são mostrados lá.
</p>
<h4 name="Como_eu_posso_mostrar_o_que_minha_extens.C3.A3o_est.C3.A1_fazendo.3F"> Como eu posso mostrar o que minha extensão está fazendo? </h4>
<p>Você pode usar o <code><a href="pt/DOM/window.alert">alert()</a></code>, <code><a href="pt/DOM/window.dump">dump()</a></code>,
<code><a href="pt/Components.utils.reportError">Components.utils.reportError()</a></code>, ou até <a href="pt/NsIConsoleService">the console service</a> para mostrar dados variáveis e o texto da depuração.
</p>
<h4 name="Por_que_meu_c.C3.B3digo_n.C3.A3o_roda_corretamente.3F"> Por que meu código não roda corretamente? </h4>
<p>Se o seu código não trabalha como o esperado, a primeira coisa que você deve fazer é checar o console JavaScript (veja <a href="#Como_eu_posso_ver_os_erros_no_meu_c.C3.B3digo.3F">sobre</a>).
</p><p>Um erro comum é tentar acessar a DOM (Document Object Model - Modelo de objeto do documento) de uma janela antes que ela esteja totalmente carregada. Isso acontece se você coloca o código de inicialização no topo do seu código -script- (i.e. fora de qualquer função). O conserto é usar um <code>load</code> para listar eventos para travar seu código até que a janela termine de carregar:
</p>
<pre class="eval">function exampleBrowserStartup(event)
{
  // coloque o código de inicialização aqui
}
window.addEventListener("load", exampleBrowserStartup, false);
</pre>
<h4 name="Acessando_um_documento_de_uma_p.C3.A1gina_que_n.C3.A3o_funciona"> Acessando um documento de uma página que não funciona </h4>
<p>Para acessar um documento de uma página web atual através do browser.xul overlay, você deve usar o <code>content.document</code>, ao invés de apenas <code>document</code> que é o próprio documento da janela do navegador. Veja <a href="pt/Working_with_windows_in_chrome_code#Content_windows">en:Working with windows in chrome code</a> para mais detalhes.
Você pode também, por padrão {{mediawiki.interwiki('en', 'XPCNativeWrapper', 'en:XPCNativeWrapper')}} que previne você de acessar através do acesso de um "script-defined objects" na página web e fazer outras tarefas.
</p>
<h4 name="Aparece_um_erro_de_an.C3.A1lise_XML.2C_mas_o_arquivo_parece_correto.21"> Aparece um erro de análise XML, mas o arquivo parece correto! </h4>
<p>Uma fonte comum de erros de análise (como <font color="red">texto vermelho</font> com uma  <font color="red">-------------^</font> abaixo) é um caracter &amp; ou um &lt; em seu código ou um valor de atributo, que tem uma função especial em XML. Por exemplo:
</p>
<pre class="eval">&lt;button oncommand="window.open('<span class="plain">http://example.com/</span>q?param1=value<b>&amp;param2</b>=val2')"/&gt;
</pre>
<p>ou
</p>
<pre class="eval">&lt;script&gt;function lesser(a,b) { return <b>a &lt; b</b> ? a : b; }&lt;/script&gt;
</pre>
<p>O problema pode ser resolvido por uma das seguintes formas:
</p>
<ol>
<li>substitua o caracter que não é representação de conflito XML (Exemplo: "&amp;" -&gt; "&amp;amp;"&lt;" -&gt; "&amp;lt;")</li>
<li>(em caso de ser um nó de texto, como um código) coloque tags de CDATA ao redor:
<pre>&lt;script&gt;&lt;![CDATA[
   function lesser(a,b) {
     return a &lt; b ? a : b;
   }
 ]]&gt;&lt;/script&gt;</pre>
</li>
<li>Coloque seu código em um arquivo separado e inclua o nome dele:
<pre>&lt;script type="application/x-javascript" src="seucodigo.js"/&gt;</pre>
</li></ol>
<h3 name="C.C3.B3digo_de_Exemplo"> Código de Exemplo </h3>
<p>A forma mais fácil para encontrar o código que você precisa para usar em algo útil é procurar uma extensão (ou parte do Mozilla mesmo) 
Isso faz o código e mostra como um código. (Os arquivos XPI e JAR usam o formato ZIP).
Encontram-se algumas documentações em: <a href="Special:Tags?tag=Extensões&amp;language=pt">lista de artigos relacionados com extensões no MDC</a>, {{mediawiki.interwiki('en', 'Code_snippets', 'en:Code snippets')}}, e <a class="external" href="http://kb.mozillazine.org/Category:Example_code">Example code page on MozillaZine</a>.
</p>
<h3 name="Onde_posso_encontrar_mais_ajuda.3F"> Onde posso encontrar mais ajuda? </h3>
<p>Por favor veja {{mediawiki.interwiki('en', 'Extensions:Other_Resources', 'en:Extensions:Other Resources')}} e <a href="pt/Extens%c3%b5es/Comunidade">Extensões:Comunidade</a>.
</p><p>Antes de pedir ajuda, tenha certeza de configurar as <a href="#Depurando">preferências de depuração</a> e <a href="#Como_eu_posso_mostrar_o_que_minha_extens.C3.A3o_est.C3.A1_fazendo.3F">cheque o console JavaScript</a> para mensagens relacionadas. Também, não esqueça de fazer uma pequena busca antes de perguntar. E leia este FAQ!
</p><p><span class="comment">Categorias</span>
</p><p><span class="comment">Interwiki Language Link</span>
</p>{{ wiki.languages( { "en": "en/Extension_Frequently_Asked_Questions", "es": "es/Preguntas_frecuentes_sobre_Extensiones", "fr": "fr/Foire_aux_questions_sur_les_extensions", "it": "it/Domande_frequenti_sulle_Estensioni", "ja": "ja/Extension_Frequently_Asked_Questions" } ) }}
Reverter para esta revisão