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:
- 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.
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):
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
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:
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.
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.
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.
|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
|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|
|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 + /|