Scratchpad provides an environment for experimenting with JavaScript code. You can write, run, and examine the results of code that interacts with the web page.

Unlike the Web Console, which is designed for interpreting a single line of code at a time, Scratchpad lets you edit larger chunks of JavaScript code, then execute it in various ways depending on how you want to use the output.

Usage

Opening Scratchpad in its own window

There are several different ways to open Scratchpad in its own window:

  • press Shift + F4, or go to the Web Developer menu (which is a submenu in the Tools menu on OS X and Linux), then select Scratchpad
  • click the wrench icon (), which is in the main toolbar or under the Hamburger menu (), then select "Scratchpad".

This will open up Scratchpad in its own window.

Opening Scratchpad in the Toolbox

New in Firefox 47.

From Firefox 47, you can open Scratchpad inside the Toolbox. First you need to check "Scratchpad" in the "Default Firefox Developer Tools" section of the Settings page.

Now Scratchpad will be available in the Toolbox, alongside other tools like the Page Inspector and the Web Console. This is especially useful in split Console mode: you can use Scratchpad for a persistent, multiline editor, and the Console to interact with the page.

Editing

The Scratchpad window looks something like this (on OS X the menu bar is at the top of the screen):

A screenshot of the Scratchpad

The File menu offers options to save and load JavaScript code snippets, so you can reuse code later if you like.

Code completion

Scratchpad integrates the tern code analysis engine, and uses that to provide autocomplete suggestions and popups containing information on the current symbol. To list autocomplete suggestions, press Ctrl + Space.

For example, try typing d, then pressing Ctrl + Space. You'll see the autocomplete box, as shown below:

The icon next to each suggestion indicates the type, and the currently highlighted suggestion gets a popup with more information. and cycle through the suggestions and Enter or Tab select the highlighted choice.

Inline documentation

To show the inline documentation popup, press Ctrl + Shift + Space when the cursor is on an identifier. For example, if you type document.addEventListener, then press Ctrl + Shift + Space, you'll see a popup that shows a summary of the function's syntax and a short description:

The "[docs]" link takes you to the MDN documentation for the symbol.

Executing

Once you've written your code, select the code you want to run. If you don't select anything, all the code in the window will be run. Then choose the way you want the code to run using the buttons along the top, using the Execute menu, or using the context menu. The code is executed in the scope of the currently selected tab. Any variables you declare outside of a function will be added to the global object for that tab.

There are four execution options available.

Run

When you choose the Run option, the selected code is executed. This is what you'd use to execute a function or other code that manipulates the content of your page without needing to see the result.

Inspect

The Inspect option executes the code just like the Run option; however, after the code returns, an object inspector is opened to let you examine the returned value.

For example, if you enter the code:

window

Then choose Inspect, the object inspector is shown that looks something like this:

Inspecting an object in the Scratchpad

Display

The Display option executes the selected code, then inserts the result directly into your Scratchpad editor window as a comment, so you can use it as a REPL.

Reload And Run

The Reload And Run option is only available in the Execute menu. It first reloads the page, then executes the code when the page's "load" event fires. This is useful for running the code in a pristine environment.

Running Scratchpad in the browser context

You can run Scratchpad in the context of the browser as a whole rather than a specific web page. This is useful if you are working on Firefox itself or developing add-ons. To do this check "Enable chrome and add-on debugging" in the Developer Tool Settings. Once you've done this, the Environment menu has a Browser option; once that's selected, your scope is the entire browser rather than just the page content, as you will see from examining some globals:

window
/*
[object ChromeWindow]
*/

gBrowser
/*
[object XULElement]
*/

The Scratchpad execution context is set to browser when a snippet file has
// -sp-context: browser
on the first line.

Keyboard shortcuts

Command Windows OS X Linux
Open the Scratchpad Shift + F4 Shift + F4 Shift + F4
Run Scratchpad code Ctrl + R Cmd + R Ctrl + R
Run Scratchpad code, display the result in the object inspector Ctrl + I Cmd + I Ctrl + I
Run Scratchpad code, insert the result as a comment Ctrl + L Cmd + L Ctrl + L
Re-evaluate current function Ctrl + E Cmd + E Ctrl + E
Reload the current page, then run Scratchpad code Ctrl + Shift + R Cmd + Shift + R Ctrl + Shift + R
Save the pad Ctrl + S Cmd + S Ctrl + S
Open an existing pad Ctrl + O Cmd + O Ctrl + O
Create a new pad Ctrl + N Cmd + N Ctrl + N
Close Scratchpad Ctrl + W Cmd + W Ctrl + W
Pretty print the code in Scratchpad Ctrl + P Cmd + P Ctrl + P
Show autocomplete suggestions Ctrl + Space Ctrl + Space Ctrl + Space
Show inline documentation Ctrl + Shift + Space Ctrl + Shift + Space Ctrl + Shift + Space

Source editor shortcuts

This table lists the default shortcuts for the source editor.

In the Editor Preferences section of the developer tools settings, you can choose to use Vim, Emacs, or Sublime Text key bindings instead.

To select these, visit about:config, select the setting devtools.editor.keymap, and assign "vim" or "emacs", or "sublime" to that setting. If you do this, the selected bindings will be used for all the developer tools that use the source editor. You need to reopen the editor for the change to take effect.

From Firefox 33 onwards, the key binding preference is exposed in the Editor Preferences section of the developer tools settings, and you can set it there instead of about:config.

Command Windows OS X Linux
Go to line Ctrl + J Cmd + J Ctrl + J
Find in file Ctrl + F Cmd + F Ctrl + F
Find again Ctrl + G Cmd + G Ctrl + G
Select all Ctrl + A Cmd + A Ctrl + A
Cut Ctrl + X Cmd + X Ctrl + X
Copy Ctrl + C Cmd + C Ctrl + C
Paste Ctrl + V Cmd + V Ctrl + V
Undo Ctrl + Z Cmd + Z Ctrl + Z
Redo Ctrl + Shift + Z / Ctrl + Y Cmd + Shift + Z / Cmd + Y Ctrl + Shift + Z / Ctrl + Y
Indent Tab Tab Tab
Unindent Shift + Tab Shift + Tab Shift + Tab
Move line(s) up Alt + Up Alt + Up Alt + Up
Move line(s) down Alt + Down Alt + Down Alt + Down
Comment/uncomment line(s) Ctrl + / Cmd + / Ctrl + /