在加载页面@ chrome扩展名上自动粘贴剪贴板

时间:2014-03-11 03:56:07

标签: javascript google-chrome google-chrome-extension

我正在创建一个网站,其中的主要问题是从剪贴板粘贴内容,以及扩展内容。

我想在打开特定页面时自动粘贴剪贴板内容。

由于某种原因,加载页面时不执行execCommand(“粘贴”)。

content.js

setTimeout(function() { chrome.extension.sendMessage({greeting: "hello"},function(response){}); },200);

background.js

chrome.extension.onMessage.addListener(
  function(request, sender, sendResponse) {
document.execCommand("Paste");
  sendResponse({});
  return true;
});

的manifest.json

"background": {
  "page": "src/bg/background.html",
  "persistent": true
},
"options_page": "src/options/index.html",
"permissions": [
  "clipboardRead",
  "clipboardWrite",
  "fileBrowserHandler",
  "*my website address*"
],
"content_scripts": [
{
"matches": [
        "*my website address*"
    ],
"js": ["js/content.js"],
    "run_at": "document_end"
}
]

一切都很好,直到需要完成粘贴并且它不起作用...

谢谢:)

2 个答案:

答案 0 :(得分:0)

http://caniuse.com/#search=clipboardData

说使用document.execCommand('paste')

不会触发“粘贴”命令

显然还有其他方法可以复制和制作副本。粘贴,但这一切都取决于兼容性。 我仍在浏览寻找一个很好的解决方案。

答案 1 :(得分:-1)

不确定这是否是您要查找的内容,但这是有关剪贴板API的Google教程:

https://developers.google.com/web/updates/2018/03/clipboardapi

显然,您需要一个变量来保存document.execCommand('paste')的结果:

button.addEventListener('click', e => {
  const input = document.createElement('input');
  document.body.appendChild(input);
  input.value = text;
  input.focus();
  input.select();
  const result = document.execCommand('copy');
  if (result === 'unsuccessful') {
    console.error('Failed to copy text.');
  }
})