【发布时间】:2018-09-17 02:31:33
【问题描述】:
我是 javascript 新手,有很多困惑... 我正在尝试在 Tampermonkey 中编写一个脚本,一旦触发“复制”事件侦听器,它将允许将光标放在输入区域的末尾。 这是我要应用它的网站:https://voicenotebook.com/#medtrdiv 原代码为:
var input = document.querySelector('#docel');
var textarea = document.querySelector('#docel');
var reset = function (e) {
var len = this.value.length;
this.setSelectionRange(len, len);
};
input.addEventListener('copy', reset, false);
textarea.addEventListener('copy', reset, false);
问题是,如果我单击复制,它不会复制文本,尽管它会将光标放在末尾。所以我猜问题是函数执行得太快了。
我想为这个功能添加一些延迟,但似乎没有任何效果。所以我认为解决方案是在触发事件监听器后将函数延迟 100 毫秒。 这是我尝试过的:
var input = document.querySelector('#docel');
var textarea = document.querySelector('#docel');
var reset = function (e) {
var len = this.value.length;
this.setSelectionRange(len, len);
};
textarea.addEventListener('copy', setTimeout(reset, 100), false);
input.addEventListener('copy', setTimeout(reset, 100), false);
我知道这可能根本没有意义。我也尝试过不同的东西。我已经研究了很多关于此的主题,但对我没有任何帮助。你能帮我弄清楚吗? 提前谢谢!
【问题讨论】:
-
欢迎来到 StackOverflow!这里有一篇文章可以帮助你理解,Up and Running with Asynchronous JavaScript,希望对你有帮助!
标签: javascript settimeout addeventlistener