Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展粘贴到输入元素中_Javascript_Html_Google Chrome_Google Chrome Extension_Clipboard - Fatal编程技术网

Javascript Chrome扩展粘贴到输入元素中

Javascript Chrome扩展粘贴到输入元素中,javascript,html,google-chrome,google-chrome-extension,clipboard,Javascript,Html,Google Chrome,Google Chrome Extension,Clipboard,让我们想象我有一个简单的页面。内容如下 <form> <input type="text" id="startText"> </form> 我知道我可以使用“execCommand('paste')”函数在chrome扩展中进行粘贴。但我不知道如何修改上述代码,以便将用户剪贴板的内容粘贴到输入元素中 我想尝试一下: document.getElementById("startText").value.execCommand('paste') 但这

让我们想象我有一个简单的页面。内容如下

<form>
     <input type="text" id="startText">
</form>
我知道我可以使用“execCommand('paste')”函数在chrome扩展中进行粘贴。但我不知道如何修改上述代码,以便将用户剪贴板的内容粘贴到输入元素中

我想尝试一下:

document.getElementById("startText").value.execCommand('paste')

但这并不奇怪,因为出于安全原因,剪贴板只能通过后台页面访问。问题是后台页面不能与DOM交互,只有内容脚本可以。签出,它解决了后台页面和内容脚本之间的此问题。

由于安全原因,剪贴板只能通过后台页面访问。问题是后台页面不能与DOM交互,只有内容脚本可以。签出,它解决了后台页面和内容脚本之间的此问题。

从2014年起,您现在可以在内容脚本中直接使用复制/粘贴,前提是您在清单中声明了正确的权限

请务必记住,
execCommand('paste')
不会返回剪贴板的内容,但实际上会触发粘贴操作,粘贴到文档的焦点元素和选择区域。因此,要粘贴到输入元素中的代码是:

document.getElementById("startText").select();
var didSucceed = document.execCommand('paste');
如果希望捕获格式化文本,则需要使用
DIV contentEditable=true
而不是
TEXTAREA

如果您希望看到一个使用旧方法使用后台页面的工作示例,您可以看到my.

自2014年起,现在您可以在内容脚本中直接使用复制/粘贴,前提是您在清单中声明了正确的权限

请务必记住,
execCommand('paste')
不会返回剪贴板的内容,但实际上会触发粘贴操作,粘贴到文档的焦点元素和选择区域。因此,要粘贴到输入元素中的代码是:

document.getElementById("startText").select();
var didSucceed = document.execCommand('paste');
如果希望捕获格式化文本,则需要使用
DIV contentEditable=true
而不是
TEXTAREA


如果您希望看到一个使用旧方法(使用背景页面)的工作示例,您可以查看我的。

谢谢--我非常感谢您的回复。但这些例子似乎相当复杂。我只想将剪贴板的内容一次性粘贴到单个输入元素的内容中。显然,由于chrome的限制,这是一个棘手的问题,但我真的很难理解这个例子。@J-B-L它实际上是在背景页面(不是您的实际页面)中创建一个
textarea
,然后它选择
textarea
,从剪贴板粘贴值,然后返回粘贴值的值。然后,它通过消息将值发送到内容脚本,该脚本可以访问页面的DOM,并将值插入
textarea
元素。消息传递对于从后台页面获取内容到内容脚本以及页面的DOM来说非常重要。它绕过了许多安全限制。2014年,他们修复了它,使内容脚本可以使用复制/粘贴,因此不需要背景页。-谢谢你,我真的很感谢你的回复。但这些例子似乎相当复杂。我只想将剪贴板的内容一次性粘贴到单个输入元素的内容中。显然,由于chrome的限制,这是一个棘手的问题,但我真的很难理解这个例子。@J-B-L它实际上是在背景页面(不是您的实际页面)中创建一个
textarea
,然后它选择
textarea
,从剪贴板粘贴值,然后返回粘贴值的值。然后,它通过消息将值发送到内容脚本,该脚本可以访问页面的DOM,并将值插入
textarea
元素。消息传递对于从后台页面获取内容到内容脚本以及页面的DOM来说非常重要。它绕过了许多安全限制。2014年,他们修复了它,因此内容脚本可以使用复制/粘贴,因此不需要背景页面-