选择并复制输入文本onclick?

Mat*_*hew 7 javascript

我实际上已经看到了一些关于此的问题,其中大部分问题来自至少5年或6年前.

我想要一个输入框:

<input id="copy-text" type="text" value="Click this text!">
Run Code Online (Sandbox Code Playgroud)

这是我一直在尝试使用的JavaScript:

document.getElementById("copy-text").onclick = function() {
  this.select();
  execCommand('copy');
  alert('This is a test...');
}
Run Code Online (Sandbox Code Playgroud)

我知道我的代码不起作用.如果我删除execCommand('copy');然后alert()弹出,但它似乎在该行遇到错误.我也尝试过制作它this.execCommand('copy');,不知道该怎么做.

小提琴:https://jsfiddle.net/6v24k4sk/

我的想法是,我希望用户单击输入框,它将选择所有文本,然后将其复制到剪贴板.

有任何想法吗?

kog*_*ikp 13

你应该放一份文件.在execCommand前面.

document.getElementById("copy-text").onclick = function() {
    this.select();
    document.execCommand('copy');
    alert('This is a test...');
}
Run Code Online (Sandbox Code Playgroud)

在这里你可以找到一个工作的例子:https: //jsfiddle.net/9q3c1k20/

编辑:

该函数还返回浏览器是否支持此功能.我认为您应该检查该值,因为execCommand仍然没有最终规范,因此无法保证在所有浏览器中都能正常工作.

  • @Matthew,因为你处于一个(onclick)事件处理程序的函数中,`this`指的是事件发生的对象.在这种情况下,`this`是`<input ...>`控件,所以你在该对象上调用`.select()`.`execCommand`函数是`document`对象的属性,因此`document.execCommand()`...而在_window_对象上调用普通的非限定`execComand()`,并且没有`window.execCommand`功能. (3认同)