[7a54b5]: addon-sdk / source / doc / dev-guide-source / guides / index.md Maximize Restore History

Download this file

index.md    250 lines (192 with data), 6.9 kB


This page lists more theoretical in-depth articles about the SDK.

Contributor's Guide

Getting Started

Learn how to contribute to the SDK: getting the code, opening/taking a bug, filing a patch, getting reviews, and getting help.

Private Properties

Learn how private properties can be implemented in JavaScript using prefixes, closures, and WeakMaps, and how the SDK supports private properties by using namespaces (which are a generalization of WeakMaps).


Learn about the module system used by the SDK (which is based on the CommonJS specification), how sandboxes and compartments can be used to improve security, and about the built-in SDK module loader, known as Cuddlefish.

Content Processes

The SDK was designed to work in an environment where the code to manipulate web content runs in a different process from the main add-on code. This article highlights the main features of that design.

Classes and Inheritance

Learn how classes and inheritance can be implemented in JavaScript, using constructors and prototypes, and about the helper functions provided by the SDK to simplify this.

SDK Infrastructure

Module structure of the SDK

The SDK, and add-ons built using it, are of composed from reusable JavaScript modules. This explains what these modules are, how to load modules, and how the SDK's module tree is structured.

Program ID

The Program ID is a unique identifier for your add-on. This guide explains how it's created, what it's used for and how to define your own.

Firefox compatibility

Working out which Firefox releases a given SDK release is compatible with, and dealing with compatibility problems.

SDK API lifecycle

Definition of the lifecycle for the SDK's APIs, including the stability ratings for APIs.

SDK Idioms

Working With Events

Write event-driven code using the the SDK's event emitting framework.

Two Types of Scripts

This article explains the differences between the APIs available to your main add-on code and those available to content scripts.

Content Scripts

Introducing content scripts

An overview of content scripts.

Loading content scripts

Load content scripts into web pages, specified either as strings or in separate files, and how to control the point at which they are executed.

Accessing the DOM

Detail about the access content scripts get to the DOM.

Communicating with other scripts

Detail about how content scripts can communicate with "main.js", with other content scripts, and with scripts loaded by the web page itself.

Using "port"

Communicating between a content script and the rest of your add-on using the port object.

Using "postMessage()"

Communicating between a content script and the rest of your add-on using the postMessage() API, and a comparison between this technique and the port object.

Cross-domain content scripts

How to enable content scripts to interact with content served from different domains.

Reddit example

A simple add-on which uses content scripts.

XUL Migration

XUL Migration Guide

Techniques to help port a XUL add-on to the SDK.

XUL versus the SDK

A comparison of the strengths and weaknesses of the SDK, compared to traditional XUL-based add-ons.

Porting Example

A walkthrough of porting a relatively simple XUL-based add-on to the SDK.