Scratchpad is deprecated as of Firefox 70 (bug 1565380), and will be removed as of Firefox 72 (bug 1519103). As an alternative, starting in Firefox 71, you can use the multi-line mode of the JavaScript console input.
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.
The featured video tutorial shows a case of using Scratchpad with a page run by a local web server. It is also possible to use Scratchpad over pages opened from a local file system, if permission policies allow that. But even with possible limitations present, the HTML code can be either manually entered or copied from the source and pasted into the "about:blank" page (a new empty tab) with the use Page Inspector's Edit as HTML context menu command.
There are several different ways to open Scratchpad in its own window:
This will open up Scratchpad in its own window.
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
Command | Windows | macOS | 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 |
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 | macOS | Linux |
---|---|---|---|
Go to line | Ctrl + J, Ctrl + G | Cmd + J, Cmd + G | Ctrl + J, Ctrl + G |
Find in file | Ctrl + F | Cmd + F | Ctrl + F |
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 + / |