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 macOS 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
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 macOS the menu bar is at the top of the screen):
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:
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 + / |