【发布时间】:2015-03-09 15:30:46
【问题描述】:
我正在尝试创建一个上下文菜单选项,它将一些文本复制到系统剪贴板。
目前,我只是在复制一个硬编码的字符串文字,但我想知道如何将其更改为复制选定的文本。具体来说,我不知道如何正确创建createProperties 对象(见底部)
据我了解,这只能通过背景页面完成。
我有以下背景页面:
background.html
<textarea id="temp"></textarea>
<script src="context.js"></script>
context.js如下:
chrome.contextMenus.create({
"title": "Freedom",
"contexts": ["editable"],
"onclick" : copyToClipboard
});
function copyToClipboard()
{
var tempNode = document.getElementById("temp");
tempNode.value = "some text";
tempNode.select();
var status = document.execCommand('copy',false,null);
if(status) alert('successful');
else alert('unsuccessful');
}
我的manifest.json如下:
{
"manifest_version": 2,
"name": "Freedom",
"description": "Provides users useful and fun context menu options that they can access from anywhere.",
"version": "1.0",
"permissions": [
"contextMenus",
"clipboardWrite"
],
"background": {
"page": "background.html"
}
}
我显然错误地声明了 chrome.contextMenus.create() 函数。我已经阅读了它的文档,我只能想象我没有正确创建 createProperties 对象。
我一直在尝试模仿这些来源:
Is that possible calling content script method by context menu item in Chrome extension?
http://paul.kinlan.me/chrome-extension-adding-context-menus/
其他一些相关问题是:
Copy to Clipboard in Chrome Extension
How to copy text to clipboard from a Google Chrome extension?
【问题讨论】:
-
您正在调用函数而不是传递函数引用。并仔细阅读
clickevent handler ofchrome.contextMenus.create的文档,你的函数签名完全关闭了。 -
您能否提供一个示例,我一直在阅读并重读该页面,但我很困惑。我看到了很多例子,虽然我做了什么。它们过时了吗?
-
你的意思是我没有正确创建 createProperties 对象吗?
-
这里的问题由两部分组成:1)你调用一个函数而不是传递一个函数引用(在Stack Overflow上有数百个关于这个问题的问题,搜索你会发现...... ) 和 2) onclick 处理程序与 API 描述不匹配。你能先链接到你提到的一些“过时”的例子吗?也许这个例子并没有过时,而是你的一个误解。
-
会做,现在编辑。
标签: javascript google-chrome google-chrome-extension contextmenu clipboard-interaction