我正在尝试使用execcommand("paste")chome扩展将剪贴板数据粘贴到textarea中,但我似乎无法让它工作.权限已设置.我试图设置focus()textarea,但document.execCommand("paste")什么也没做,我没有错误.execcommand("paste")从后台页面调用也没有任何作用.
<form>
<textarea id="ta"></textarea>
</form>
<script type="text/javascript">
document.findElemetById("ta").focus();
document.execCommand("paste");
</script>
Run Code Online (Sandbox Code Playgroud) 我很难找到有关如何为"Ctrl + C"添加监听器,获取剪贴板数据,然后在Chrome扩展程序中写回剪贴板的最新信息.我找到的所有旧代码都是针对旧版本的,现在已弃用.
我正在使用 Firebase Cloud Messaging (FCM) 发送数据消息,以便我可以使用 Service Worker 处理通知。现在我使用 Service Worker 显示通知,当我单击通知时,我想复制剪贴板中的通知内容。
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler((payload)=> {
const title = payload.data.title;
const options = {
body: payload.data.body
};
return self.registration.showNotification(title,
options);
});
self.addEventListener('notificationclick', (event)=>{
console.log(event);
navigator.clipboard.writeText(event).then(function() {
console.log('Async: Copying to clipboard was successful!');
}, function(err) {
console.error('Async: Could not copy text: ', err);
});
});
Run Code Online (Sandbox Code Playgroud)
单击通知时notificationclick触发事件。但我变得navigator.clipboard不确定。我也在为我的网站使用安全域。我也无法使用,document.execcommand('copy')因为无法使用 Service Worker 访问 DOM。您能否建议一种无需打开任何网址即可复制通知内容的方法?
我想通过Chrome扩展程序将一些文本变量写入剪贴板,当用户按下快捷键时会发生这种情况.除写入剪贴板外,我已经完成了所有部分.
我使用以下关键字搜索整个StackOverflow:"[google-chrome-extension]剪贴板"
所以我想说,我看到所有相关的:
clipboardRead和clipboardWrite许可(已完成)<textarea>,call
document.execCommand('Copy');
或中
添加文本document.execCommand("Copy", false, null);即使我在StackOverflow上尝试了我的扩展textarea,我将我的文本插入到StackOverflow的wmd-input部分textarea,然后选择它,然后调用copy.什么都没有,什么都没有......
一切都在尝试.请指教......我错过了什么?
我想从我正在创建的chrome扩展中将一些数据写入clipborad.在清单文件中,我赋予了clipboardRead和clipboardWrite的权限.
我使用这个功能,我在这里找到
但它不起作用.好像是"document.execCommand('copy');" 无法工作.
我在内容脚本中写下所有这些代码.
thx清单:
{
"manifest_version":2,
"name":"easyCopy",
"description":"just a small toll",
"version":"1.0.0",
"permissions":[
"clipboardWrite", "http://*/*", "clipboardRead"
],
"content_scripts":[
{
"matches":["http://*/*"],
"js":["jquery-1.9.1.min.js", "main_feature.js"]
}
],
"background":{
"persistent":false,
"page":"background.html"
}
}
Run Code Online (Sandbox Code Playgroud)
main_feature.js:
copyOrderId();
function copyOrderId() {
$(".order-num").click(function () {
var curOrderNum = $(this).text();
copyTextToClipboard(curOrderNum);
// chrome.extension.sendMessage({method:"copy", content:curOrderNum}, function (response) {
// clog(response);
// });
});
}
function copyTextToClipboard(text) {
var copyFrom = $('<textarea/>');
copyFrom.text(text);
$('body').append(copyFrom);
copyFrom.select();
document.execCommand('copy', true);
copyFrom.remove();
}
function clog(message) {
console.log(message);
} …Run Code Online (Sandbox Code Playgroud) 比如说,在我的 Chrome 扩展中,我需要将用户格式的 HTML 文本复制到剪贴板。文本(HTML 形式)可能是这样的:
This is a <b>test</b><div><br></div>
<div>And this is too</div><div><br></div><div>Thank you</div>
Run Code Online (Sandbox Code Playgroud)
如果我使用这个JavaScript 示例,我所复制的只是上面的 HTML 标记。但我想知道,我可以将其复制为格式化文本,还是这样?
这是一个测试
这也是
谢谢
html javascript clipboard google-chrome google-chrome-extension
我正在开发一个扩展程序,它拍摄页面可见部分的快照并将其复制到剪贴板。我决定使用新的剪贴板 API来做到这一点。处理捕获和复制的代码位于我的扩展程序的 background.js 中。这是相关部分的样子:
chrome.tabs.captureVisibleTab(function(dataUrl) {
convertToBlob(dataUrl).then((data) => {
navigator.clipboard.write([
new ClipboardItem({
'image/png': data
})
]);
});
});
Run Code Online (Sandbox Code Playgroud)
此操作是通过单击我使用 注入页面的小部件触发的chrome.tabs.executeScript。我只在 Chrome 中工作。但是,每次尝试时,都会出现此错误:
Uncaught (in promise) DOMException: Document is not focused.
Run Code Online (Sandbox Code Playgroud)
最初,我认为我捕获的文档没有聚焦,但事实并非如此。我的document.hasFocus()回归真实。然后我想,出于某种我无法理解的原因,它希望 background.html 成为焦点。因此,我最终创建了一个包含输入字段的自定义 background.html,在执行 navigator.clipboard 访问之前,我会以编程方式关注并单击该输入。没有骰子。编辑:我执行了实际的页面检查并且 background.html 确实没有聚焦,即使我将焦点分配给它,这是有道理的。没有意义的是为什么会发生这种情况,因为我应该使用此 API 在任何上下文中将内容捕获到剪贴板。
我确实运行了 navigator.permissions 查询以查看是否授予了剪贴板写访问权限,并且确实如此。
在这一点上,我没有想法,有人有什么建议吗?谢谢!卢卡
我想通过单击ContextMenu进行扩展以将选择复制到clipboasd.在chrome中,很多人都使用flash solusion.但是如何在ContextMenus中使用flash.这似乎是不可能的.谁能告诉我一个solusion?
我做了什么
var a = chrome.contextMenus.create({"title":copy,"context":["selection"],"onclick":copy});
function copy(info,tab){
document.execCommand('selectAll'); //just for example
document.execCommand('copy');
}
Run Code Online (Sandbox Code Playgroud)
我已经将manifestWrite权限添加到manifest.json.But它似乎不起作用."许可":[ "contextMenus", "clipboardWrite"]
我了解Chrome扩展程序的后台页面永远不会显示.对我来说,后台页面应该只包含脚本是有道理的.在什么情况下需要HTML标记?
在https://developer.chrome.com/extensions/background_pages中有一个带有HTML背景页面的示例,但我无法让它工作(可能是因为我不确定它应该做什么).
是否有任何简单的Chrome扩展程序示例,演示HTML标记在后台页面中的用途?