javascript - 为什么复制功能在 setTimeout 中不起作用?

标签 javascript google-chrome firefox google-chrome-devtools firefox-developer-tools

当我尝试在 setTimeoutcopy 时,Chrome 会报错。

setTimeout(function () { copy('a') }, 0)

Uncaught ReferenceError: copy is not defined
    at <anonymous>:1:26

它也不适用于 window 范围。

setTimeout(function () { window.copy('a') }, 0)

Uncaught TypeError: window.copy is not a function

有趣的是,如果我保留对copy 的引用并重新使用它,它就可以工作

cc = copy;
setTimeout(function () { cc('a') }, 0);

在 Firefox 中,它不会抛出任何错误,但即使使用已保存的引用也不起作用。

为什么 copy 函数在 setTimeout 中不起作用,这是一个错误吗?

最佳答案

copy 是开发者工具的一部分 Command Line API并且在浏览器控制台之外不可用。例如,尝试在作为普通网页一部分的 JavaScript 文件中执行命令,您会遇到同样的错误。

当您在 setTimeout 回调中调用命令时,执行上下文不再是控制台,因此 copy 不再存在。

关于javascript - 为什么复制功能在 setTimeout 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49028762/

相关文章:

javascript - 为每个项目添加类

javascript - Chrome 中的标签 ID 是如何生成的?

javascript - 基于 Chromium 的浏览器中奇怪的 JavaScript 错误

java - 无法使用 Selenium 中的用户配置文件启动 Chrome 浏览器

html - 如何实现悬停滚动内容的定宽div?

javascript - 检查div子元素是否变化

javascript - 如何在跟踪变量名称的同时对变量值进行排序?

javascript - 使用 javascript 将数据从一个域发送到另一个域(我可以访问两个网页的 <head> )

html - CSS translate breaks &lt;input&gt; 自动完成列表位置

javascript - Firefox中Onchange不改变就触发