10

我整天都在努力让这个工作,但我不能......我已经尝试过:-Flash 版本(至少 3 个不同的版本)-内容脚本中的 document.execCommand("copy"),但也在后台页面中我已经检查了很多关于 stackoverflow 的页面......每个可用的解决方案。

有没有人有一个工作的例子?

编辑:

清单.json

{
    "name": "test",
    "manifest_version": 2,
    "version": "1.0",
    "description": "test",
    "content_scripts": [{
            "matches": ["https://somesite.com*"],
            "js": ["jquery.js", "script.js"],
            "run_at": "document_end",
            "css": ["style.css"]
    }],
    "permissions": [
            "clipboardWrite",
            "clipboardRead"
    ]
}

脚本.js

$(document).ready(function () {
    $('body').append('<textarea id="test"/>');
    var $test = $('#test');
    $test.text('some text which should appear in clipboard');
    $test.select();
    document.execCommand('copy');
    alert('copied!');
});

以上不起作用。显示警报...

EDIT2:我也尝试过使用 Flash 版本,但它可能不起作用,因为我认为该扩展是在 localhost 上运行的东西。

4

2 回答 2

12

复制工作很奇怪。您应该为副本注册一个事件侦听器,然后在您执行document.execCommand('copy').

这是事件处理程序的一个工作示例:

document.addEventListener('copy', function(e) {
  var textToPutOnClipboard = "some text which should appear in clipboard";
  e.clipboardData.setData('text/plain', textToPutOnClipboard);
  e.preventDefault();
});
于 2015-07-14T14:24:05.227 回答
6

确保您在 manifest.json 中拥有复制权限:

"permissions": [
  "clipboardWrite", // for copy and cut
  "clipboardRead", // for paste

],

然后document.execCommand('copy')在选择某些内容后使用

更多信息在这里

于 2012-11-12T18:40:38.360 回答