HTTP/2 301
content-length: 162
content-type: text/html
date: Wed, 15 Oct 2025 04:21:36 GMT
location: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks/onMoved
server: nginx
strict-transport-security: max-age=60; includeSubDomains
via: 1.1 google
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
HTTP/2 200
content-type: text/html
x-guploader-uploadid: AAwnv3Igd34plFwKuXfq_MNvvG0UcN4lS7RIPBDoh5UWk1FVOw2b0dle9iRblbLgamK-vuCa
cache-control: public, max-age=3600
expires: Wed, 15 Oct 2025 05:21:37 GMT
last-modified: Tue, 14 Oct 2025 01:04:26 GMT
etag: W/"a61713d542caf03683cb7cfa1a61aa0c"
x-goog-generation: 1760403866195934
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 153756
x-goog-meta-goog-reserved-file-mtime: 1760402647
x-goog-hash: crc32c=R7OqnQ==, md5=phcT1ULK8DaDy3z6GmGqDA==
x-goog-storage-class: STANDARD
accept-ranges: none
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
alt-svc: clear
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
strict-transport-security: max-age=63072000
content-security-policy: default-src 'self'; script-src 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; script-src-elem 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; style-src 'report-sample' 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; connect-src 'self' developer.allizom.org bcd.developer.allizom.org bcd.developer.mozilla.org updates.developer.allizom.org updates.developer.mozilla.org https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com https://incoming.telemetry.mozilla.org https://observatory-api.mdn.allizom.net https://observatory-api.mdn.mozilla.net https://api.github.com/search/issues stats.g.doubleclick.net https://api.stripe.com; font-src 'self'; frame-src 'self' interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net mdn.github.io live-samples.mdn.mozilla.net live-samples.mdn.allizom.net *.mdnplay.dev *.mdnyalp.dev *.play.test.mdn.allizom.net https://v2.scrimba.com https://scrimba.com jsfiddle.net www.youtube-nocookie.com codepen.io survey.alchemer.com https://js.stripe.com; img-src 'self' data: *.githubusercontent.com *.googleusercontent.com *.gravatar.com mozillausercontent.com firefoxusercontent.com profile.stage.mozaws.net profile.accounts.firefox.com developer.mozilla.org mdn.dev interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net wikipedia.org upload.wikimedia.org https://mdn.github.io/shared-assets/ https://mdn.dev/ https://*.google-analytics.com https://*.googletagmanager.com www.gstatic.com; manifest-src 'self'; media-src 'self' archive.org videos.cdn.mozilla.net https://mdn.github.io/shared-assets/; child-src 'self'; worker-src 'self';
x-frame-options: DENY
origin-trial: AxVILwizhbMjxFeHOn1P3R8niO1RJY/smaK4B4d1rLzc1gTaxtXMSaTi+FoigYgCw40uFRDwFcEAeqDR+vVLOW4AAABfeyJvcmlnaW4iOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZyIsImZlYXR1cmUiOiJQcml2YXRlQXR0cmlidXRpb25WMiIsImV4cGlyeSI6MTc0MjA3OTYwMH0=
x-cloud-trace-context: c7aa8a77334d7b1a4b74e1d2a3fb8d8a
date: Wed, 15 Oct 2025 04:21:37 GMT
server: Google Frontend
via: 1.1 google
vary: Accept-Encoding
content-encoding: gzip
x-cache: miss
bookmarks.onMoved - Mozilla | MDN
browser.bookmarks.onMoved.addListener(listener)
browser.bookmarks.onMoved.removeListener(listener)
browser.bookmarks.onMoved.hasListener(listener)
Events have three functions:
addListener(listener)
Adds a listener to this event.
removeListener(listener)
Stop listening to this event. The listener
argument is the listener to remove.
hasListener(listener)
Check whether listener
is registered for this event. Returns true
if it is listening, false
otherwise.
listener
The function called when this event occurs. The function is passed these arguments:
id
string
. ID of the item that was moved.
moveInfo
object
. Object containing more details about the move. See the moveInfo section for more details.
parentId
string
. The new parent folder.
index
integer
. The new index of this item in its parent.
oldParentId
string
. The old parent folder.
oldIndex
integer
. The old index of the item in its parent.
function handleMoved(id, moveInfo) {
console.log(`Item: ${id} moved`);
console.log(`Old index: ${moveInfo.oldIndex}`);
console.log(`New index: ${moveInfo.index}`);
console.log(`Old folder: ${moveInfo.oldParentId}`);
console.log(`New folder: ${moveInfo.parentId}`);
}
function handleClick() {
browser.bookmarks.onMoved.addListener(handleMoved);
}
browser.browserAction.onClicked.addListener(handleClick);