为什么复制功能在setTimeout中不起作用? [英] Why copy function is not working inside setTimeout?
问题描述
当我在 setTimeout
内尝试复制
时,Chrome会抱怨。
Chrome complains when I try to copy
inside setTimeout
.
setTimeout(function () { copy('a') }, 0)
Uncaught ReferenceError: copy is not defined
at <anonymous>:1:26
它不适用于窗口
范围。
setTimeout(function () { window.copy('a') }, 0)
Uncaught TypeError: window.copy is not a function
有趣的是,如果我保留对复制
的引用并重复使用它,它可以工作
Interestingly, if I keep the reference to copy
and reuse it, it works
cc = copy;
setTimeout(function () { cc('a') }, 0);
在Firefox中,它不会抛出任何错误,但即使保存也不起作用参考。
In Firefox, it doesn't throw any error, but it doesn't work even with the saved reference.
为什么复制
函数在 setTimeout $ c $内无效c>,这是一个错误?
Why copy
function doesn't work inside setTimeout
, is it a bug?
推荐答案
复制
是其中一部分开发人员工具'命令行API 并且在浏览器控制台之外无法使用。例如,尝试在普通网页的JavaScript文件中执行命令时会出现同样的错误。
copy
is part of the developer tools' Command Line API and is not available outside the browser console. For example, trying to execute the command in a JavaScript file that's part of a normal web page you'd get the same error.
当您调用<内部的命令时code> setTimeout 回调,执行上下文不再是控制台,因此 copy
不再存在。
When you invoke the command inside the setTimeout
callback, the execution context is no longer the console so copy
doesn't exist anymore.
这篇关于为什么复制功能在setTimeout中不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!