Javascript 通过Chrome扩展中的关联菜单选项复制选定文本

Javascript 通过Chrome扩展中的关联菜单选项复制选定文本,javascript,google-chrome,google-chrome-extension,contextmenu,clipboard-interaction,Javascript,Google Chrome,Google Chrome Extension,Contextmenu,Clipboard Interaction,我试图创建一个上下文菜单选项,将一些文本复制到系统剪贴板 目前,我只是复制一个硬编码的字符串文字,但我想知道如何将其更改为复制选定的文本。具体来说,我不知道如何正确地创建createProperties对象(见下图) 我的理解是,这只能通过背景页来完成 我有以下背景页: background.html <textarea id="temp"></textarea> <script src="context.js"></script> 我的man

我试图创建一个上下文菜单选项,将一些文本复制到系统剪贴板

目前,我只是复制一个硬编码的字符串文字,但我想知道如何将其更改为复制选定的文本。具体来说,我不知道如何正确地创建
createProperties
对象(见下图)

我的理解是,这只能通过背景页来完成

我有以下背景页:

background.html

<textarea id="temp"></textarea>
<script src="context.js"></script>

我的
manifest.json
如下所示:

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_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
对象

我一直试图模仿这些来源:

其他一些相关问题包括:

文档中是传递给方法的字典(即带有“标题”、“上下文”等的内容)

状态为函数接收两个参数。第一个参数(“info”)是一个字典,其中包含有关所选文本的信息。第二个参数(“tab”)包含关于该选项卡的信息(在您的情况下,您不需要)。
“信息”字典有一个属性“selectionText”,它在单击上下文菜单项时保存所选文本。这可以在您的代码中使用,如下所示:

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_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"
    }   

}    
功能copyToClipboard(信息){
var tempNode=document.getElementById(“temp”);

tempNode.value=info.selectionText;//您正在调用函数,而不是传递函数引用。仔细阅读的文档,您的函数签名已完全关闭。您是否可以提供一个示例,我一直在阅读并重新阅读该页,但我感到困惑。尽管我看到了很多示例,但这些示例与我所做的相同。它们过时了吗?你的意思是我没有正确地创建createProperties对象吗?这里的问题包括两部分:1)调用函数而不是传递函数引用(关于这个问题,堆栈溢出上有数百个问题,搜索,你会发现…)和2)onclick处理程序与API描述不匹配。您能否先链接到您提到的一些“过时”示例?也许示例没有过时,但您对此有误解。现在编辑即可。