您好我正在尝试在剪切复制粘贴中捕获缓冲区。 我可以获得粘贴,但复制和剪切似乎不起作用。
ENV: Windows 10 x64: 谷歌浏览器是最新的 版本65.0.3325.181(官方构建)(64位)
的index.html
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xmlns:v='urn:schemas-microsoft-com:vml'>
<body>
<hr/>Clipboard TEST<br/>
<textarea id='idCut'
rows='8'
cols='32'>
Cut something from here
</textarea>
</body>
</html>
的manifest.json
{
"name": "Chrome Extension",
"description": "Stuff",
"version": "2.0",
"permissions": [
"nativeMessaging",
"notifications",
"activeTab",
"tabs",
"webRequest",
"webRequestBlocking",
"downloads",
"clipboardWrite",
"clipboardRead",
"*://*/*"
],
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["content.js"],
"run_at": "document_end"
}],
"browser_action": {
"default_title": "Make this page do Stuff"
},
"manifest_version": 2
}
content.js
function onCut(e)
{
console.log( 'onCut ENTER' );
var buf = e.clipboardData.getData('text/plain');
console.log( 'onCut EXIT ' + buf );
}
function onCopy(e)
{
console.log( 'onCopy ENTER' );
var buf = e.clipboardData.getData('text/plain');
console.log( 'onCopy EXIT ' + buf );
}
function onPaste(e)
{
console.log( 'onPaste ENTER' );
var buf = e.clipboardData.getData('text/plain');
console.log( 'onPaste EXIT ' + buf );
}
document.addEventListener('cut',onCut,true);
document.addEventListener('copy',onCopy,true);
document.addEventListener('paste',onPaste,true);
然后我从文本区域选择“something”并按ctrl X,ctrl C,ctrl V 结果是:
content.js:8 onCut ENTER
content.js:12 onCut EXIT
content.js:17 onCopy ENTER
content.js:21 onCopy EXIT
content.js:26 onPaste ENTER
content.js:30 onPaste EXIT something
所以,Paste给了我缓冲区,但其他的没有。
我的问题是为什么不剪切和复制显示缓冲区但是粘贴是什么?
我已经读过我需要使用background.js并将op执行到像div这样的临时dom元素,然后将其本机消息传出,但如果这是真的,为什么粘贴工作?似乎安全/ impl不一致。
这是否有原因? 或者我错过了什么?
我刚刚添加了html和清单...抱歉,它似乎不需要,因为粘贴正在工作。我相信让它完整?
由于