Getting Started with Firefox Extensions

Questa traduzione è incompleta. Aiutaci a tradurre questo articolo dall’inglese

Che cos'è un'estensione di Firefox?

Le estensioni aggiungono funzionalità alle applicazioni di Mozilla come Firefox e Thunderbird. Possono aggiungere qualsiasi cosa da un pulsante sulla barra degli strumenti a funzionalità completamente nuove. Permettono di personalizzare l'applicazione per soddisfare le necessità personali di qualsiasi utente che le necessiti, permettendo comunque di mantenere dimensioni ridotte.

Tratto dalla Pagina della estensioni.

Come descritto nel testo virgolettato, un'estensione è una piccola applicazione che aggiunge qualcosa di nuovo a una o più applicazioni Mozilla. Questo corso si focalizza sulle estensioni per Firefox, ma gli stessi principi sono validi (quasi identicamente) per qualsiasi altra applicazione come per esempio,Thunderbird, Seamonkey e Flock.

Vale la pena notare che ci sono delle differenze nelle definizioni di estensione e add-on. Tutte le estensioni sono degli add-ons, ma gli add-ons possono anche essere temi, plugin o traduzioni (language packs). Questo corso riguarda lo sviluppo delle applicazioni, ma anche i temi e i language pack si sviluppano in modo molto simile. I plugin sono tutt'altra cosa e non saranno spiegati in questo corso. Puoi trovare più informazioni sui plugin e il loro sviluppo nella pagina dei plugins.

Firefox provides a very rich and flexible architecture that allows extension developers to add advanced features, customize the user's experience, and completely replace and remove parts of the browser. The Mozilla Add-ons repository (AMO) holds an extensive number of extensions with a wide variety of functions: content filtering (AdBlock Plus, NoScript), web application interaction (Delicious Bookmarks, eBay Companion) and web development (DOM Inspector, Firebug). These are very advanced and complex extensions, and you'll learn most of what it takes to create extensions like these (Glaxstar actually worked on 3 of those listed).

Extensions now exist in 3 different forms: Add-ons SDK extensions (also known as Jetpacks), bootstrapped extensions and traditional extensions. If you're only getting started developing add-ons, the Add-ons SDK provides a great way to quickly create simple ones and build on them. This tutorial focuses on traditional extensions, which are created differently. Bootstrapped extensions are a step above traditional ones in complexity, so you should go through this tutorial before giving them a try.

We'll begin the tutorial by analyzing a very simple extension.

The Hello World Extension

Our sample extensions and this tutorial in general are meant for modern versions of Firefox, but most of it works on older versions too.

We'll now begin with a basic "Hello World" extension. Let's start by installing it. Click on the link below.

Install Hello World

This will either trigger an install or a file download, depending on the content type the web server is using for the file. The appropriate content type to trigger an install is application/x-xpinstall. In the case of this wiki, the content type is properly set and a install window should appear.

If the content type is set correctly, you will probably get notified that the site is not allowed to install add-ons on Firefox. This is a security barrier that prevents sites from installing extensions without user consent. It is necessary because malicious extensions can do the same level of harm as any malicious program: stealing data, erasing or replacing files, and causing unwanted behavior in general. AMO is the only pre-allowed site because all published add-ons on AMO have gone through a review process that includes security checks.

After downloading the file, you can drag and drop it into the Firefox content area, and installation should begin.

You'll see a window telling you that you're about to install an extension, with some additional information such as the name of the author. You'll see a message saying that the author cannot be verified. Only extensions signed with a digital certificate can verify authorship. Signed extensions are rare, but we'll cover how to sign them later on.

Click on the Install Now button. After the extension is installed, you'll be asked to restart Firefox. Installing, uninstalling, enabling and disabling add-ons require a restart to complete, with the exception of NPAPI plugins, Add-ons SDK extensions and bootstrapped extensions. This is an important point to keep in mind if you're building an extension that manipulates other extensions or themes.

After installing, look at the main Firefox window and see if you notice anything different.

Did you see it? There's a new menu on the main menu, labeled "Hello World!". If you open the menu and then the menu item below, you'll see a nice alert message (for some definitions of 'nice'). Click on the OK button to close it.

That's all the extension does. Now let's take a closer look at it.

Extension Contents

You may have noticed that the extension file you installed is named xulschoolhello1.xpi. XPI (pronounced "zippy") stands for Cross-Platform Installer, because the same installer file can work on all platforms Firefox supports. XPIs are simply ZIP files, but Firefox recognizes the XPI extension and triggers the installation process when an XPI file is loaded.

To look into the XPI file you need to download it first, not install it. If the server triggers an install when clicking on a link or button, what you need to do is right click on the install link, and choose the Save Link As... option.

Decompress the XPI file in a convenient location. Issue the following command to unzip the file on Linux or Mac OS X:

unzip xulschoolhello1.xpi -d xulschoolhello1

On Windows, you can change the file extension from xpi to zip, or open the file directly, then unzip it, using a ZIP tool.

You should see the following directory structure:

  • xulschoolhello1
    • chrome.manifest
    • install.rdf
    • content
      • browserOverlay.xul
      • browserOverlay.js
    • skin
      • browserOverlay.css
    • locale
      • en-US
        • browserOverlay.dtd

That's lots of files for something so simple! In the next section, we'll inspect these files and see what they do.

This tutorial was kindly donated to Mozilla by Appcoast.