Website Compatibility: Disabling Dock on Your Site
Website owners can disable the Dock extension on specific inputs, sections, or an entire page with a single data-dock="false" attribute.
If you run a website, you may have inputs where an external writing assistant does not belong: a code editor, a terminal emulator, a canvas tool, or an internal admin field. Dock gives you one attribute to opt those out, scoped exactly how you need. You add it to your own markup, and it applies to every visitor.
Add data-dock="false" to opt out. The same attribute works at three scopes,
and the value must be exactly "false" in lowercase.
Put the attribute on a single input element and Dock skips just that input. Every other input on the page still gets the button.
<textarea data-dock="false"></textarea>
<div contenteditable="true" data-dock="false"></div>Put the attribute on any container and Dock skips every input inside it. This is the right scope for a self-contained widget like a code editor.
<div class="code-editor" data-dock="false">
<textarea>// Code here</textarea>
<!-- No Dock button on any input inside -->
</div>Put the attribute on <html> or <body> and Dock does not initialize at all on
that page. This is the very first check Dock runs, so the extension exits before
doing any work.
<body data-dock="false">
<!-- Dock does not initialize -->
</body>| Scope | Where to add it | What happens |
|---|---|---|
| Single input | On the element | The button skips that input |
| Section | On any container | All inputs inside are skipped |
| Entire page | On <html> or <body> | The extension does not initialize |
When Dock considers attaching its button to an input, it walks up the DOM from
that input toward the root, checking each ancestor for data-dock="false". If it
finds the attribute on the element itself, on any container above it, or on the
page root, it skips that input. That single walk is what gives you all three
scopes from one attribute.
A few details worth knowing:
- The value must be exactly
"false"(lowercase). Any other value is ignored, so a baredata-dockordata-dock="true"does not opt out. - It crosses Shadow DOM boundaries. If an input lives inside a web component’s shadow root, the walk continues from the shadow host into the light DOM above it, so the attribute works on custom elements too.
- Adding the attribute dynamically works. You can set
data-dock="false"on elements after they render and Dock will respect it. - The page-level check runs once at load. Put
data-dock="false"on<html>or<body>in your initial markup so the extension never initializes.
- Code editors such as Monaco and CodeMirror
- Terminal emulators such as xterm.js
- Canvas-based editors
- Custom rich text editors
- Internal admin tools
This page is for site owners. If you are a user who wants to turn Dock off on a site you visit, see Settings and Preferences.