copy() 是 edge 和 firefox 控制台内置命令,可直接复制变量到剪贴板;需在控制台同步执行、目标变量已存在,firefox 会自动 json 格式化,不可序列化字段将静默忽略。

在 Edge 和 Firefox 浏览器的开发者控制台中,copy() 是一个内置的便捷命令,能直接把 JavaScript 对象、数组、字符串等变量内容复制到系统剪贴板,无需手动展开、右键、再复制。它比“Store as global variable + copy(temp1)”更直接,也比书签脚本更轻量。
Edge 中使用 copy() 的前提与操作
Edge(基于 Chromium)完全支持 copy(),但需注意两点:
- 必须在 DevTools 控制台中执行,且目标变量已存在(比如你刚执行过
const data = {id: 1, name: "test"}); - 不能在异步回调或定时器里直接调用(如
setTimeout(() => copy(data), 0)),否则可能报错Failed to execute 'writeText' on 'Clipboard'—— 因为浏览器要求剪贴板写入必须由用户手势同步触发,而控制台输入属于可信上下文,所以直接敲copy(data)回车即可。
Firefox 中 copy() 的兼容性说明
Firefox 自 v63 起支持 navigator.clipboard.writeText(),而控制台中的 copy() 是其封装命令,行为与 Chrome/Edge 一致。但要注意:
- Firefox 会将对象自动序列化为 JSON 字符串(类似
JSON.stringify(obj, null, 2)),格式美观、带缩进,适合粘贴到编辑器中查看; - 若对象含有不可序列化字段(如函数、undefined、循环引用),
copy(obj)会静默失败或只复制可序列部分,此时建议先用console.log(obj)检查结构,必要时手动copy(JSON.stringify(obj, null, 2)); - 不依赖
about:config中的clipboard.autocopy设置——该选项仅影响“选中文本后自动复制”,和copy()无关。
实用技巧:配合 console.dir 或临时变量提升效率
遇到复杂返回值(例如 fetch 响应体、React 组件 state)时,可组合使用:
- 先用
console.dir(response.data)展开查看结构,确认要复制的目标; - 若响应是 Promise,先
await response.json()得到纯对象,再copy(result); - 如果控制台输出的是匿名对象(如点击响应体后显示的
Object {…}),右键它 → “Store as global variable”,生成temp1,然后立刻执行copy(temp1)—— 这在 Edge/Firefox 中均有效。
替代方案:当 copy() 不可用时(极少数旧版或安全限制场景)
虽然现代 Edge/Firefox 都默认启用,但若意外失效,可降级使用:
-
copy(JSON.stringify(obj)):强制转字符串,兼容性最强; -
navigator.clipboard.writeText(JSON.stringify(obj, null, 2)):显式调用 API,返回 Promise,可加.then(() => console.log('copied'))确认; - Firefox 用户还可直接右键控制台里的对象 → “Copy object”,效果等同于
copy(),无需输命令。











