FAQ Extensões

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

Conteúdo da revisão

Esse é um guia rápido de respostas para as perguntas mais frequentes sobre o desenvolvimento de {{mediawiki.interwiki('en', 'extension', 'en:extension')}}. 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 en:configurar as opções de desenvolvimento.

Depurando

Você deve en:configurar as opções de desenvolvimento 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 en:configurar as opções de desenvolvimento

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);

Accessing the document of a webpage doesn't work

To get the document of the current webpage from a browser.xul overlay, you should use content.document, instead of just

document which is the document of the browser's window itself. See [[Working with windows in chrome

code#Content_windows|Working with windows in chrome code]] for details.

Also, by default XPCNativeWrapper prevents you from accessing script-defined objects in the webpage and doing some other things.

I get an XML parsing error, but the file looks fine!

A common source of parsing errors (some red text with a -------------^ underneath) is an

& or a < character in your script or an attribute value, which has special meaning in XML. For example:

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

or

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

The problem can be solved in one of the following ways:

  1. replace the character with its non XML conflicting representation (Ex: "&" -> "&amp;", "<" -> "&lt;")
  2. (in case it's a text node, such as script) place CDATA tags around it:
    <script><![CDATA[
       function lesser(a,b) {
         return a < b ? a : b;
       }
     ]]></script>
  3. Put your script in a separate file and include it using:
    <script type="application/x-javascript" src="our.js"/>

Example code

The easiest way to find out what code you need to use in order to do something useful is to find an extension (or part of Mozilla itself)

that does it and look at its code. (The XPI and JAR files use the ZIP format.)

There is also some documentation. See the list of extension-related articles on MDC, Code snippets, and

Example code page on MozillaZine.

Where can I get more help?

Please see Extensions:Other Resources and Extensions:Community.

Before asking for help, be sure to set the debugging prefs and check the JavaScript Console for related messages. Also, don't forget to do at least a simple search before asking. And read this FAQ!

{{ 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 {{mediawiki.interwiki('en', 'extension', 'en:extension')}}. 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">en:configurar as opções de desenvolvimento</a>. 
</p>
<h3 name="Depurando"> Depurando </h3>
<p>Você deve  <a class="external" href="http://kb.mozillazine.org/Setting_up_extension_development_environment">en:configurar as opções de desenvolvimento</a> antes de 
</p><p>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" 
</p><p>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">en:configurar as opções de desenvolvimento</a> 
</p><p><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 
</p><p>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>, 
</p><p><code><a href="pt/Components.utils.reportError">Components.utils.reportError()</a></code>, ou até <a href="pt/NsIConsoleService">the console service</a> para mostrar 
</p><p>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 
</p><p>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 
</p><p>é 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="Accessing_the_document_of_a_webpage_doesn.27t_work"> Accessing the document of a webpage doesn't work </h4>
<p>To get the document of the current webpage from a browser.xul overlay, you should use <code>content.document</code>, instead of just 
</p><p><code>document</code> which is the document of the browser's window itself. See [[Working with windows in chrome 
</p><p>code#Content_windows|Working with windows in chrome code]] for details.
</p><p>Also, by default <a href="pt/XPCNativeWrapper">XPCNativeWrapper</a> prevents you from accessing script-defined objects in the webpage and doing some other things.
</p>
<h4 name="I_get_an_XML_parsing_error.2C_but_the_file_looks_fine.21"> I get an XML parsing error, but the file looks fine! </h4>
<p>A common source of parsing errors (some <font color="red">red text</font> with a <font color="red">-------------^</font> underneath) is an 
</p><p>&amp; or a &lt; character in your script or an attribute value, which has special meaning in XML. For example:
</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>or
</p>
<pre class="eval">&lt;script&gt;function lesser(a,b) { return <b>a &lt; b</b> ? a : b; }&lt;/script&gt;
</pre>
<p>The problem can be solved in one of the following ways:
</p>
<ol>
<li>replace the character with its non XML conflicting representation (Ex: "&amp;" -&gt; "&amp;amp;", "&lt;" -&gt; "&amp;lt;")</li>
<li>(in case it's a text node, such as script) place CDATA tags around it:
<pre>&lt;script&gt;&lt;![CDATA[
   function lesser(a,b) {
     return a &lt; b ? a : b;
   }
 ]]&gt;&lt;/script&gt;</pre>
</li>
<li>Put your script in a separate file and include it using:
<pre>&lt;script type="application/x-javascript" src="our.js"/&gt;</pre>
</li></ol>
<h3 name="Example_code"> Example code </h3>
<p>The easiest way to find out what code you need to use in order to do something useful is to find an extension (or part of Mozilla itself) 
</p><p>that does it and look at its code. (The XPI and JAR files use the ZIP format.)
</p><p>There is also some documentation. See <a href="Special:Tags?tag=Extensions&amp;language=pt">the list of extension-related articles on MDC</a>, <a href="pt/Code_snippets">Code snippets</a>, and 
</p><p><a class="external" href="http://kb.mozillazine.org/Category:Example_code">Example code page on MozillaZine</a>.
</p>
<h3 name="Where_can_I_get_more_help.3F"> Where can I get more help? </h3>
<p>Please see <a href="pt/Extensions/Other_Resources">Extensions:Other Resources</a> and <a href="pt/Extensions/Community">Extensions:Community</a>.
</p><p>Before asking for help, be sure to set the <a href="#Debugging">debugging prefs</a> and <a href="#How_can_I_display_what_my_extension_is_doing.3F">check the 

JavaScript Console</a> for related messages. Also, don't forget to do at least a simple search before asking. And read this FAQ!
</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